侧边栏壁纸
  • 累计撰写 781 篇文章
  • 累计创建 1 个标签
  • 累计收到 1 条评论
标签搜索

底层

Dettan
2022-01-09 / 0 评论 / 0 点赞 / 33 阅读 / 1,166 字
温馨提示:
本文最后更新于 2022-04-30,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
/ 前端 / JS / 底层
prototype 就是存储类有什么方法, __proto__ 指向prototype .
prototype 里也有 __proto__ . 这个是链式的.

__proto__指向给对象构造函数的prototype;prototype指向原型对象

1.
我们需要牢记两点:①__proto__和constructor属性是对象所独有的;② prototype属性是函数所独有的,因为函数也是一种对象,所以函数也拥有__proto__和constructor属性。
2.
__proto__属性的作用就是当访问一个对象的属性时,如果该对象内部不存在这个属性,那么就会去它的__proto__属性所指向的那个对象(父对象)里找,一直找,直到__proto__属性的终点null,再往上找就相当于在null上取值,会报错。通过__proto__属性将对象连接起来的这条链路即我们所谓的原型链。
3.
prototype属性的作用就是让该函数所实例化的对象们都可以找到公用的属性和方法,即f1.proto === Foo.prototype。
4.
constructor属性的含义就是指向该对象的构造函数,所有函数(此时看成对象了)最终的构造函数都指向Function。
prototype
prototype 属性使您有能力向对象添加属性和方法。 PS:但是不用它好像也可以.

函数所独有的,它是从一个函数指向一个对象。它的含义是函数的原型对象,也就是这个函数(其实所有函数都可以作为构造函数)所创建的实例的原型对象
它的作用就是包含可以由特定类型的所有实例共享的属性和方法,也就是让该函数所实例化的对象们都可以找到公用的属性和方法。任何函数在创建的时候,其实会默认同时创建该函数的prototype对象。
<script type="text/javascript">
	function employee(name,job,born)
	{
	this.name=name;
	this.job=job;
	this.born=born;
	}
	
	var bill=new employee(&quot;Bill Gates&quot;,&quot;Engineer&quot;,1985);
	
	employee.prototype.salary=null;
	bill.salary=20000;
	
	document.write(bill.salary);

</script>




new操作符的原理解析
语法糖,可以等价地变为 call 形式:
func(p1, p2) 等价于 func.call(undefined, p1, p2)

obj.child.method(p1, p2) 等价于
obj.child.method.call(obj.child, p1, p2)



0

评论区