构造函数的原型对象之prototype小解

在js中我们常常使用构造函数
今天我们来讲一下构造函数的prototype属性

function Person(){
}
var a=new Person();
console.log(a)


在检查下发现Person类中有个prototype属性,这就是我们今天要说的原型对象
当我们在全局作用域中创建一个个构造函数时,就会对全局作用域造成污染,如上代码,当我们再次创造一个Person构造函数时,第一Person构造函数就会被覆盖。如需解决这个问题,我们就需要用到构造函数的prototype属性。
      我们先来了解一下他的基本性质

  1. 每个构造函数都有prototype属性
  2. 子元素可以使用__proto__(两个下划线)去访问构造函数的protype属性
    function Person(){ } var a=new Person(); console.log(a.__proto__)
  3. 每个构造函数的protype不相等
    在这里插入图片描述
    在这里插入图片描述
    了解他的基本性质之后,我们就可以开始用了
function Person(){
	Person.prototype.b=123;
}
var a=new Person();
console.log(a.b)

在这里插入图片描述
若我们不想用初始值,可以用子元素重新定义

function Person(){
	Person.prototype.b=123;
}
var a=new Person();
a.b="zhangsan";
console.log(a.b)

在这里插入图片描述
ps:当子元素重新定义后Person.prototype.b还是等于123,

然后我们可以这样用

function Person(){
	Person.prototype.b=function(){
		console.log("zzg")
	};
}
var a=new Person();
a.b();

在这里插入图片描述
这样我们创建的b方法就不会污染全局作用域,不容易被下面的代码覆盖。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章