javascript中new是什么意思

JavaScript012

javascript中new是什么意思,第1张

new创建对象的符号。比如new

Object(),new

Array()

this可以代表对象,比如this可以代表window,也可以代表某个元素。具体的要看this所处的当前作用域。

Date是日期对象,用的时候要实例化。

实例化:d=new

Date()

操作对象,主要是操作对象的属性和方法

现在写一个函数,这个函数的返回值是一个对象,来观察一下这个对象,和函数体内this指向

①,对象a就是一个空对象

②,对象a没有color属性

③,对象a原型指向Object.prototype

④,函数体内this指向window(上图可见,没调用函数之前,window.color属性不存在)

在执行函数时,加一个new试试看有啥效果:

①,没有return,这个函数居然返回了一个对象

②,对象a有个color属性

③,对象a的原型指向了这个构造函数的prototype属性

④,window对象没有color属性

⑤,this指向了对象a

由上得出总结new的作用:

①,new能让一个构造函数返回一个对象(下面称为A)而无需return

②,new会让函数体内的this指向这个A

③,new会让A的原型指向这个构造函数的prototype属性

PS:

①,new只用了三个字符,却实现了很多功能,非常贴心,可以称呼new为语法糖或贴心语法( syntactic sugar )

②,一个函数自带prototype对象,而且里面默认有一个constructor属性,这个属性返回实例对象的构造函数,如果你重新给prototype对象赋值,小心不要覆盖掉它

③,如果使用new,函数内就别 return一个对象 了 ,这样返回的是return后面的对象,this不会指向它

④,就算函数体内空空如也,new的作用不变

它创建一个新对象。这个对象的类型就是 object 。

它将这个新对象的内部不可访问的 [[prototype]] (即 proto )属性设置为构造函数的外部可访问 原型 对象(每个函数对象都会自动具有 prototype 属性)。

它使this变量指向新创建的对象。

每当this提及时,它都会使用新创建的对象执行构造函数。

除非构造函数返回非null对象引用,否则它将返回新创建的对象。在这种情况下,将返回该对象引用。

注意: 构造函数 是指new关键字后面的函数,如

new ConstructorFunction(arg1, arg2)

完成此操作后,如果请求新对象的未定义属性,则脚本将改为检查对象的 [[prototype]]

对象的属性。这就是您可以获得类似于JavaScript中传统类继承的方式的方法。

关于这一点,最困难的部分是点号2。每个对象(包括函数)都具有称为 [[prototype]]的 内部属性。它可以 只

被在创建对象的时间与设置,无论是 新的 ,具有 的Object.create

,或者基于文本(函数默认Function.prototype的,数字到Number.prototype等)。只能使用

Object.getPrototypeOf(someObject) 读取它。有 没有 其他的方式来设置或读取此值。

除了隐藏的 [[prototype]] 属性外,函数还具有一个称为 prototype

的属性,您可以访问和修改此属性,以为您创建的对象提供继承的属性和方法。