原型继承

<code>
// 使用Proxy实现propotypal inheritance
function MultiPrototype(...prototypes){
var chain = [{}, ...prototypes]
return new Proxy(chain[0], {
get: function(target, name){
for (let obj of chain){
if (name in obj) return obj[name]
}
},
has: function(target, name){
for (let obj of chain){
if (name in obj) return true
}
return false
}
})
}
EventMonkey = MultiPrototype({
Object.create(Monkey.prototype),
Object.create(Event.prototype),
})
</code>

<code>
//ES5 实现propotypal inheritance
Object.spawn = function(parent, props){
var defs={}
for(var key in props){
if(props.hasOwnProperty(key)){
defs[key] = {
value: props[key],
enumerable: true
}
}
}
return Object.create(parent, defs)
}
function Point(x,y){
return {
x: x,
y: y
}
}
var point = Point(100, 100)
var colorPoint = Object.spawn(point, {color: "red"})
Object.create(point, {color:{value: "red"}})
</code>

<code>
//ES5 实现propotypal inheritance
Object.spawn = function(parent, props){
var sub = Object.create(parent)
for (var key in props){
if(props.hasOwnProperty(key)){
sub[key] = props[key]
}
}
return sub
}
</code>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 2,092评论 1 10
  • 创建对象的设计模式 工厂模式抽象了创建具体对象的过程,用函数封装以特定接口创建对象的细节解决了创建多个相似对象的问...
    Obeing阅读 810评论 1 6
  • 1.JS对象创建的三种方式 1.第一种形式 工厂模型 function Person(){}// 添加原型属性Pe...
    呦释原点阅读 485评论 0 8
  • 一、原型判断方法*术语解释:成员=属性+方法实例成员:实例属性和实例方法原型成员:原型对象属性和原型对象方法1、原...
    daisx阅读 190评论 0 0
  • 今天的晨读文章干货满满,尤其是对我这种在工作上找不到突破的小青年。 奥美公司作为广告业的龙头,其宣传和策划的能力及...
    Lucky_mama阅读 384评论 4 4