JavaScript 使用new关键字调用函数
使用new关键字调用函数
test.js
代码如下
function Person(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
// return o;
//
this.sayName=function(){
alert(name);
}
console.log(this);
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
study.html
代码如下
<!DOCTYPE html>
<html lang="zh-cn">
<head>
<meta charset="en">
</head>
<body>
<script src="test.js"></script>
</body>
</html>
运行结果
修改test.js代码
function Person(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
console.log(this);
return o;
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
控制台输出
扩展
修改test.js代码
定义变量,存放匿名函数的地址,然后使用该变量来调用函数
var Person = function(name, age, obj) {
var o = new Object();
o.name = name;
o.age=age;
o.obj=obj;
o.sayName=function(){
alert(this.name);
}
console.log(this);
return o;
}
var friend=new Person("nike", 29, "software engineer");
console.log(friend);
friend.sayName();
控制台输出
同上一步结果
结论
1、new js函数名称(参数列表),会把对应的函数当做构造函数来使用,如果函数未定义返回值,默认的会返回通过构造函数(被调用函数)构造的对象实例;如果函数定义了返回值,则返回定义的返回值。
2、使用new js函数名称(参数列表)调用函数,函数中的 this 代表了新构造的对象实例。
3、可以直接通过定义变量,存放匿名函数的地址,然后使用该变量来调用函数
JavaScript 使用new关键字调用函数的更多相关文章
- Js 使用new关键字调用函数和直接调用函数的区别
最近开始学习js,在看到书上的一个例子时,引发了我的一系列思考: 书上例子: function Person(name,age,job){ var o =new Object(); o.name=na ...
- 【javaScript基础】马上调用函数表达式
在javaScript中,每一个函数被调用时,都会创建一个新的运行上下文.由于在一个函数里面定义的变量和函数仅仅能在里面訪问.在外面是不行的.上下文提供了一种非常easy的方法来创建私有性. //ma ...
- 【JavaScript】关于 setInterval() 调用函数方法的一次实验
实验主题: setInterval() 方法是 JS 中比较常用的一个方法.setInterval() 方法可以按照指定的周期 ( 毫秒 ) 来调用函数方法或计算表达式. setInterval() ...
- Javascript中的定时调用函数setInterval()和setTimeout()
首先介绍这两个函数 一.setInterval() 按照指定的周期来调用函数或表达式,执行多次.(时间单位:ms) timer = setInterval("content =documen ...
- [转]JavaScript通过参数动态调用函数——js中eval实现反射
以下文章出自 http://blog.rongzhiwang.com/king/archive/2012/08/13/javascriptjseval.aspx 今天碰到人问这样一个问题 ...
- JavaScript指定周期来调用函数setTimeout和setInterval
setTimeout方法:setTimeout setInterval方法:setInterval
- 深入解析Javascript中this关键字的使用
深入解析Javascript中面向对象编程中的this关键字 在Javascript中this关键字代表函数运行时,自动生成的一个内部对象,只能在函数内部使用.比如: function TestFun ...
- JavaScript中以构造函数的方式调用函数
转自:http://www.cnblogs.com/Saints/p/6012188.html 构造器函数(Constructor functions)的定义和任何其它函数一样,我们可以使用函数声明. ...
- 理解JavaScript的立即调用函数表达式(IIFE)
首先这是js的一种函数调用写法,叫立即执行函数表达式(IIFE,即immediately-invoked function expression).顾名思义IIFE可以让你的函数立即得到执行(废话). ...
随机推荐
- GrimTheRipper: 1 Vulnhub Walkthrough
靶机下载: https://www.vulnhub.com/entry/grimtheripper-1,350/ 主机层面端口扫描: ╰─ nmap -p1-65535 -A 10.10.202.15 ...
- RecyclerView 添加自定义分割线
默认的浅灰色的分割线在某些时候并不能满足我们的要求,这时就需要自定义分割线了. 我们可以通过两种方式来实现:调用 DividerItemDecoration.setDrawable 方法或者继承实现 ...
- 离线安装Mariadb
CentOS7.4开发站系统和红旗Asianux-7.3离线安装Mariadb 安装 需要Root权限 # 解压离线rpm包 tar -xvf Mariadb5.5.56.tar cd Mariadb ...
- 我如何通过K8S开发认证(CKAD)考试
题记:笔者最近经过3个多月的空余时间准备,终于通过了K8S开发认证(CKAD)的考试,在这里简单给大家分享一下经验. 一,先科普下CKAD 众所周知,Kubernetes在容器编排器大战中脱颖而出后, ...
- HUE备份已定义好的workflow
HUE备份已定义好的workflow 最近使用HUE定义了一个很复杂的调度,但是调度执行到一半就开始报错.... 这个可真让人头疼呀, 从头开始跑数据吧 太费时间了,而且会容易造成Hive库总数据冗 ...
- C# sync/async 同步/异步
同步方法 Console.WriteLine($")} {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss.fff")}******* ...
- Selenium环境要配置浏览器驱动
1.浏览器环境变量添加到path 2.将浏览器相应的驱动.exe复制到浏览器目录 3.这条就是让我傻逼似的配置一上午的罪魁祸首:将驱动.exe复制到python目录!!!! Selenium
- springboot~mybatis枚举映射
在mybatis和mybatis plus里,如果你的实体字段是一个枚举类型,而在数据表里是整型,这时在存储时需要进行处理,默认情况下,会把枚举的元素名称拼接到SQL语句里,而由于数据表是int类型, ...
- VO(视图模型) 与 DTO(数据传输对象)的区别
目录 VO(视图模型) 与 DTO(数据传输对象)的区别 1.VO与DTO概念 2.VO 视图模型的必要性与解耦 2.1 视图模型 2.2 视图模型存在的必要性 2.3 视图模型的解耦 3.DTO 存 ...
- Mac Electron App 签名后打开闪退
背景 昨天在测试 Mac Electron App 打包,发现不签名的应用能够正常打开,签了名的打开反而会崩溃. 寻因 首先我怀疑是不是自己代码导致闪退,但是在一番查找后,发现还根本没到执行我的代码就 ...