原型链深入

40 篇文章 0 订阅
32 篇文章 0 订阅
 <script>
        // 第一个技巧 可枚举不可枚举
        //Object.properyIsEnumerable 检测一个属性是否可以枚举
    // Object.prototype.aaa = function () {

    // }
    // var obj = {name:"xx",age:7};
    // for(var key in obj){
       //无论是私有的属性还是原型上的方法,for in都可以遍历到 但是一遍情况下,我们遍历一个对象只需要遍历私有的即可,我们可以使用以下判断进行处理
       //1 第一种 遍历留下可枚举属性  目的相同  
    //    if (obj.propertyIsEnumerable(key)) {
    //        console.log(key);

    //    }
        //2 第二种  遍历留下私有属性 
        // if (obj.hasOwnProperty(key)) {
        //     console.log(key);

        // }

   // }
    // obj.aaa();//可以
    // obj.__proto__.aaa();

    //2 第二个技巧 
    //Object.create();
    //Object.create();方法创建一个拥有指定原型和若干个指定属性的对象
    //Object.create(proPbj)创建一个新的对象,但是还要把proObj作为这个对象的原型,在IE6~8底下不兼容(ECMAScript 5)
    //Object.create(proto[, propertiesObject])
    //proto
    //新创建对象的原型对象。
    //propertiesObject
    //可选。如果没有指定为 undefined,则是要添加到新创建对象的可枚举属性(即其自身定义的属性,而不是其原型链上的枚举属性)对象的属性描述符以及相应的属性名称。这些属性对应Object.defineProperties()的第二个参数。
    // var obj = {
    //     // constructor:Fn,
    //     getX:function () {

    //     }
    //     };
    // function Fn() {

    // }

  //  Fn.prototype = obj;
    // Fn.prototype.sum = function () {

    // }
    //对象之间克隆该如何克隆
    //第一种办法
    // var obj2 = {};
    // for (var key in obj) {
    //    if (ojb.hasOwnproperty(key)) {
    //        obj2[key] = obj[key];
    //    }

    // }
    //将obj中的私有属性克隆到obj2中

    //第二种办法
 //  var obj3 =Object.create(obj);
    //利用create()obj3.__proto__==>obj
    //obj.__proto__==>是Object


    //模拟 object.create()
    var obj = {
        getX:function (){

        }
    };

    function object(o) {
        function Fn() {

        }
        Fn.prototype = o;
        return new Fn;
    }
    var newObj = object(obj);
    </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值