js New一个函数和直接调用的区别
程序员文章站
2022-04-30 20:25:32
使用New是构造函数,不使用New是函数调用,同时this指向不同。 示例: function Test(name, age, job) { console.log(this); this.name = name; this.age = age; this.job = job; } 1、直接调用函数 ......
使用new是构造函数,不使用new是函数调用,同时this指向不同。
示例:
function test(name, age, job) {
console.log(this);
this.name = name;
this.age = age;
this.job = job;
}
1、直接调用函数
var test1 = test('tom', 27, 'it');
来看下test2的值:
console.log(test1); // undefined
直接调用上下文指向是window
2、使用new构造函数
var test2 = new test('tom', 27, 'it');
来看下test1的值:
console.log(test2);
console.log(typeof test2); // "object"
new会使执行函数的上下文指向这个函数的本身。
最后得出一个猜测:
如果函数返回值为常规意义上的值类型(number、string、boolean)时,new 函数将会返回一个该函数的实例对象,而如果函数返回一个引用类型(object、array、function),虽然new函数与直接调用函数产生的结果等同,但是是两个不同的过程,一个是构造对象、一个是函数调用。
上一篇: 冠亚和大小赔率赚钱
推荐阅读
-
javascript构造函数和原型(js构造函数和普通函数的区别)
-
javascript构造函数和原型(js构造函数和普通函数的区别)
-
js中apply和Math.max()函数的问题及区别介绍
-
JS高级---工厂模式创建对象和自定义构造函数创建对象的区别
-
js中两种函数定义之函数声明和函数表达式的区别
-
系统调用和库函数调用的区别
-
一个Js文件函数中调用另一个Js文件函数的方法演示
-
js New一个函数和直接调用的区别
-
c语言:sizeof的使用,其不是函数,是一个操作符关键字,定义一个数组arr,输出arr和&arr的区别
-
9、试编写程序,输入一个字符串,再输入一个字符ch,将字符串中所有的ch字符替换为字符’*’。 要求定义和调用函数mChar(s, c ),该函数将字符串s中出现的所有c字符替换为’*’。