关于构造函数中this和prototype定义的属性和方法的不同

this定义的属性和方法,是生成的每个实例有属于自己的属性和方法;

prototype定义的属性和方法,是每个实例共同拥有一份构造函的引用属性和方法;

  • this定义
function Admin(food) {
   this.food = food || "米饭";
   this.arrList = [];
   this.eat = function () {
       console.log("吃点"+this.food)
   }
 }

 let son1 = new Admin("香蕉");
 let son2 = new Admin("苹果");

 console.log(son1.food);  
 son1.eat(); // 吃点香蕉
 son1.arrList.push(1);
 console.log(son1.arrList); // [1]

 console.log(son2.food);
 son2.eat();  // 吃点苹果
 son2.arrList.push(2);
 console.log(son2.arrList); // [2]
  

*prototype

function Admin() {
}

Admin.prototype.food= "";
Admin.prototype.arrList= [];
Admin.prototype.eat = function () {
    console.log("吃点"+this.food)
}

let son1 = new Admin();
let son2 = new Admin();

son1.food = "香蕉";
son1.eat(); // 吃点香蕉
son1.arrList.push(1);
console.log(son1.arrList); // [1]

son2.eat(); // 吃点
son2.food = "苹果";
son2.eat(); // 吃点苹果
son2.arrList.push(2);
console.log(son2.arrList); // [1,2]

由上可以看出this是实例自己独有的,而prototype中属性为引用数据类型是所有实例共有的;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容