Javascript中的new做了什么?
2017-09-24 19:57
204 查看
(1) 创建一个新对象;
(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;
(3) 执行构造函数中的代码(为这个新对象添加属性) ;
(4) 返回新对象。
var a=new A();
1.构造函数拥有一个叫prototype的属性,这里即A.prototype,这个对象默认有一个属性constructor,他的值是这个构造函数A。
2.javascript先创建一个空对象,先叫它做临时对象,它继承A.prototype的所有属性。
3.当A()开始执行,设置A的this指向这个临时对象,然后继续执行函数A。
4.如果没有返回语句,或者是返回对象的语句,那么返回的就是这个临时对象,否则返回的我们返回的对象。
(2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;
(3) 执行构造函数中的代码(为这个新对象添加属性) ;
(4) 返回新对象。
var a=new A();
1.构造函数拥有一个叫prototype的属性,这里即A.prototype,这个对象默认有一个属性constructor,他的值是这个构造函数A。
2.javascript先创建一个空对象,先叫它做临时对象,它继承A.prototype的所有属性。
3.当A()开始执行,设置A的this指向这个临时对象,然后继续执行函数A。
4.如果没有返回语句,或者是返回对象的语句,那么返回的就是这个临时对象,否则返回的我们返回的对象。
用原生JS实现new方法
function New(f) { return function () { var o = {"__proto__": f.prototype}; f.apply(o, arguments);//继承父类的属性 return o; //返回一个Object } }
相关文章推荐
- javascript中,new操作符的工作原理是什么?
- Javascript中调用一个函数(对象),使用new或者直接调用有什么区别?
- javascript new关键字做了什么
- 在浏览器的JavaScript里new Date().toUTCString()后,传递给C# DateTime().TryParse()会发生什么?
- 详解Javascript中new()到底做了些什么?
- javascript 关键词 new都做了写什么
- JavaScript 中 Date() 和New Date()有什么区别?
- javaScript使用new关键字时发生了什么?
- JavaScript中使用构造器创建对象无需new的情况
- Javascript中构造函数与new命令
- JavaScript 的闭包是什么
- C#中子类对父类中虚方法的处理有重写(override)和覆盖(new),他们有什么区别?
- 是什么让我们爱上Javascript
- soap_new什么模样
- new 操作符具体干了什么?
- Javascript中的new
- 如何用JavaScript判断访问的来源是电脑还是手机,是什么浏览器?
- newinstance()和new有什么区别?
- javascript中top.location.href 与 location.href的区别是什么
- javascript:void(0)是什么意思及href=#与href=javascriptvoid(0)的区别