原型模式 类继承

原型模式
每个函数( 准确说不是类、对象)都有一个prototype属性,这个属性是一个指针,指向一个对象。
使用原型对象的 好处是可以让所有对象实例共享它包含的属性和方法。

1.原型对象
(1)当创建一个新函数,就会为该函数创建一个prototype属性,这个属性指向函数的原型对象。
(2)默认情况下,所有原型对象都会自动获得一个constructor(构造函数)属性,这个属性包含一个指向 prototype属性所在函数   的指针。
(3)实例的内部包含一个指针,叫[[Prototype]]。不过这个指针对脚本则 完全不可见(某些浏览器支持一种__proto__来访问)

2.代码读取属性顺序
  首先搜索对象实例本身,没有则继续搜索指针指向的原型对象。
例:
  function Person(){
  }
  Person.prototype.name="Javascript";
  var p1 = new Person();
  var p2 = new Person();  
  p1.name="lufeng";
  alert(p1.name);//"lufeng"
  alert(p2.name);//"Javascript"
   
  使用delete操作符可以完全删除实例属性。


isPrototypeOf():确定对象之间是否存在prototype关系
hasOwnProperty():检测一个属性是存在于实例中,还是存在原型中。
Object.keys()、Object.getOwnPropertyNames():接收一个对象作为参数,返回

一个包含所有可枚举属性的字符串数组。


来看个很 蛋疼的类继承(某个HTML5游戏框架):
       
        inherit : function(childClass, parentClass) {
            var Constructor = new Function();
            Constructor.prototype = parentClass.prototype;
            childClass.prototype = new Constructor();
            childClass.prototype.constructor = childClass;
            childClass.superclass = parentClass.prototype;

            if(childClass.prototype.constructor ==  Object.prototype.constructor) {
                childClass.prototype.constructor = parentClass;
            }
        }
感觉代码看来比较乱,我画了个图:
原型模式 <wbr>类继承

当然还有Object层没有画上


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值