星空网 > 软件开发 > Java

js new都做了什么 prototype __proto__

现在对自己之前理解的东西,总结下,整理到这,看我那会画的一张图,我都不知道在说什么,那会的瞬间都疏通的感觉,现在基本都模糊了,我这脑子真是。。。

言归正传 开始:

一:思考new都做了什么,下面一个例子 

function A (){    var a1=111;    this.a2=222;    function fa(){      console.log(a1);    }    fa();  }A.prototype.a3="333";var b = new A();

  new一个构造函数

  1:会先新建一个对象,比如 var o={};

  2:然后o对象的__proto__=A函数的prototype,

  3:以o为执行环境执行A,A.apply(o,[arg])

    apply是什么,就是执行时,改变执行上下文,把A执行环境中的this 变成o,

    看到很多地方说,apply与call的区别,我认为区别就是他们两个传参不同,apply是数组形式 :apply(obj,argument)argment是一个数组,call直接是值形式 :call(obj,name,age)

 

  4:看A函数返回值的情况,然后b是什么,针对上一个的例子,b指向 {a2:222} ,里面的__proto__ ,constructor等一会说 

js new都做了什么   prototype     __proto__ 

        文章中黄色部分不大理解,按说他是系统生成的o对象,但是他为什么是A{}?

 

    现在来看a方法返回值的各种情况的列子,来看b是什么

    1:什么不返回的情况 

    js new都做了什么   prototype     __proto__

    2:返回 数据类型的情况

    js new都做了什么   prototype     __proto__  

    3:返回 引用类型的情况

    js new都做了什么   prototype     __proto__

   总结,当new一个函数时,如果函数有返回,如果是数据类型,直接忽视,返回系统生成的对象,如果返回的复杂数据类型,那么就是复杂数据类型,如果没有返回,就是系统生成的对象

二 prototype

  每个函数都有prototype(原型)属性,他的值是对象(属性集合)

  js new都做了什么   prototype     __proto__

  只有一个constructor 属性,指向本身,既然他的值是对象,包括constructor和__proto__属性,同时可以自定义属性,例如:

  js new都做了什么   prototype     __proto__

 

三:__proto__

  __proto__是隐形属性,每个对象都有这个属性,实例化对象的__proto__值是指向该对象的prototype

  js new都做了什么   prototype     __proto__

 四:自定函数 对象 Object Function他们之间prototype __proto__的联系

js new都做了什么   prototype     __proto__

 

  注意自定义函数b的prototype属性集合中的__proto__,或是说整个prototype是对象,他的__proto__,指向的是最底层的Object对象,如果下面这种new的情况,

var a = function() { this.a1="a";};
var b = function() { this.b1="b";};
var c = function() { this.c1="c";};
b.prototype = new a();
c.prototype = new b();


  b.prototype={a1:"a"};

  b.prototype.__proto__=a.prototype ,a.prototype的值 是constructor 和__proto__(指向的是最底层的Object{}),

  c.prototype={b1:"b"};

  c.prototype.__proto__=b.prototype ——》指向{a1:"a"};

 

不知道有没有理解不对的地方啊啊啊啊啊。。。。

 




原标题:js new都做了什么 prototype __proto__

关键词:JS

JS
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

虚拟信用卡:https://www.goluckyvip.com/tag/44298.html
虚拟助手:https://www.goluckyvip.com/tag/44299.html
中东跨境:https://www.goluckyvip.com/tag/443.html
跨境大佬二三:https://www.goluckyvip.com/tag/4430.html
虚拟资源:https://www.goluckyvip.com/tag/44300.html
需求建议书:https://www.goluckyvip.com/tag/44301.html
桂林酒店销售多少钱 桂林旅游宾馆价格:https://www.vstour.cn/a/410227.html
十里银滩旅游攻略玩什么住哪里怎么去?:https://www.vstour.cn/a/410228.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流