OOP

Object.create()

js const elfFcnStore = { attack(){ return "attack with " + this.weapon; } } function createElf(name,weapon){ let newElf = Object.create(elfFcnStore); newElf.name = name; newElf.weapon = weapon; return newElf; }

Constructor Functions

js function Charactor0(name, weapon) { this.name = name; this.weapon = weapon; // this.attack = function(){ // return "attack with " + this.weapon; // } } //1. every function has an attribute —— prototype,and is initialized as a empty object {} //2. it is useless when the function is not a constructor //3. we add methods that all instances of this constructor(function) use to the prototype object to aviod memories wasting Charactor0.prototype.attack = function () { return "attack with " + this.weapon; }; Charactor0.prototype.build = function () { const self = this; function building(){ return self.name + 'builds a house'; } return building(); };//注意嵌套函数的this指向 const peter = new Charactor0("peter", "peterweapon"); console.log(peter.attack());//attack with peterweapon

ES6 Class

```js class Charactor { constructor(name, weapon) { this.name = name; this.weapon = weapon; } // methods attack() { return "attack with " + this.weapon; } } class Elf extends Charactor { constructor(name, weapon, type) { super(name, weapon); // console.log('before type added' , this) this.type = type; // console.log('after type added' , this) } } class Orge extends Charactor { constructor(name, weapon, color) { super(name, weapon); // console.log('before color added' , this) this.color = color; // console.log('before color added' , this) } makeFort() { return "a fort has been made"; } } const fiona = new Elf("Fiona", "ninja stars", "house"); const dolby = new Orge("Dolby", "cloth", "green");

// console.log(fiona) // console.log(fiona.attack()) // console.log(dolby.attack()); // console.log(dolby.makeFort()) console.log(Elf.proto === Charactor);//true console.log(fiona.proto === Elf.prototype);//true console.log(dolby.proto === Orge.prototype);//true console.log(Orge.prototype.proto === Charactor.prototype);//true

```

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值