摘要:运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。新建对象链接对象设置指向原来指向执行一次构造函数返回对象当代码执行时,会发生以下事情一个继承自的新对象被创建。使用指定的参数调用构造函数,并将绑定到新创建的对象。
new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。new 关键字会进行如下的操作:
1.创建一个空的简单JavaScript对象(即{});
2.链接该对象(即设置该对象的构造函数)到另一个对象 ;
3.将步骤1新创建的对象作为this的上下文 ;
4.如果该函数没有返回对象,则返回this。
window.name = "iii" function Person(){ this.name = 3 } Person.prototype.say = function(){ console.log(this.name) } var p1 = new Person(); p1.say() //3 function _new(P){ let o = {}; //1.新建对象 let arg = Array.prototype.slice.call(arguments,1); o.__proto__ = P.prototype; //2.链接对象 // P.prototype.constructor = P; P.apply(o,arg);//3.设置this指向obj(原来指向window)//执行一次构造函数 return o;//4.返回对象 } var p2 = _new(Person) p2.say() //3 console.log(p2 instanceof Person ) //true console.log(p2.construtor === p1.construtor) //true
当代码 new Foo(...) 执行时,会发生以下事情:
一个继承自 Foo.prototype 的新对象被创建。
使用指定的参数调用构造函数 Foo,并将 this 绑定到新创建的对象。new Foo 等同于 new Foo(),也就是没有指定参数列表,Foo 不带任何参数调用的情况。
由构造函数返回的对象就是 new 表达式的结果。如果构造函数没有显式返回一个对象,则使用步骤1创建的对象。(一般情况下,构造函数不返回值,但是用户可以选择主动返回对象,来覆盖正常的对象创建步骤)
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/110299.html
摘要:不区分类和实例的概念,而是通过原型来实现面向对象编程。新创建的的原型链是也就是说,的原型指向函数的原型。最后,创建一个对象代码和前面章节完全一样小明继承用定义对象的另一个巨大的好处是继承更方便了。 JavaScript不区分类和实例的概念,而是通过原型(prototype)来实现面向对象编程。 原型是指当我们想要创建xiaoming这个具体的学生时,我们并没有一个Student类型可用...
摘要:在前端页面中,把用纯对象表示,负责显示,两者做到了最大化的分离把和关联起来的就是。了解了思想后,自己用原生实现一个框架。注意数据描述符和存储描述符不能同时存在,否则会报错报错数据拦截使用来实现数据拦截,从而实现数据监听。 在前端页面中,把 Model 用纯 JS 对象表示,View 负责显示,两者做到了最大化的分离 把 Model 和 View 关联起来的就是 ViewModel。Vi...
摘要:对于图片上传,大家一定不陌生。项目地址一环境搭建本项目使用目前最新的和进行开发,所以环境的搭建必不可少。在目录下新建代码内容只有行,其输入为一个图片文件,输出为一串编码。同样的方式,我们可以为也设置一个代理数组,以实现向外抛出数组的目的。 对于图片上传,大家一定不陌生。最近工作中遇到了关于图片上传的内容,借此机会认真研究了一番,遂一发不可收拾,最后琢磨了一个东西出来。在开发的过程中有不...
阅读 2292·2021-11-22 12:01
阅读 1945·2021-11-12 10:34
阅读 4484·2021-09-22 15:47
阅读 2797·2019-08-30 15:56
阅读 2846·2019-08-30 15:53
阅读 2380·2019-08-30 13:53
阅读 3345·2019-08-29 15:35
阅读 3085·2019-08-29 12:27