《悟透JavaScript》学习札记十一之原型真谛一

 <script type="text/javascript">
  function New(aClass, paramList) // 通用创建函数
  {
   function new_() // 定义临时的中转函数壳
   {
    // 调用原型中定义的构造函数,中转构造逻辑及参数
    aClass.Create.apply(this, paramList);
   };
   new_.prototype = aClass; // 准备中转原型对象
   return new new_(); // 返回最终建立的对象
  };
  var Person =
  {
   Create: function(name, age)
   {
    this.name = name;
    this.age = age;
   },
   SayHello: function()
   {
    alert("Hello, I'm " + this.name);
   },
   HowOld: function()
   {
    alert(this.name + " is " + this.age + " years old.");
   }
  };
  var Kevin = New(Person, ["Kevin", 25]);
  Kevin.SayHello(); // Hello, I'm Kevin
  Kevin.HowOld(); // Kevin is 25 years old.
  alert(Kevin.constructor == Object); // true
 </script>

注:每次创建完对象退出New函数作用域时,临时的new_函数对象会被自动释放。由于new_的prototype属性被设置为新的原型对象,其原来的原型对象和new_之间就已解开了引用链,临时函数及其原来的原型对象都会被正确回收。代码蓝色一句证明,新建对象的constructor属性返回的是Object函数。其实新建对象自己及其原型里没有constructor属性,那返回的只是最顶层原型对象的构造函数,即Object。

持续更新中......

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值