原型与操作符

 //Object.getPrototypeOf(person1);//取的person1对象的原型
           // Person.prototype.isPrototypeOf(person1);//判断person1的__proto__是否指向Person.prototype(即person1的原型)
            person1.hasOwnProperty("name")//hasOwnProperty()检测一个属性是存在于原型中还是存在于实例中,给定属性存在于对象实例中时才会返回true
            delete person1.name;//可以删除实例属性,此时person1的name属性只能从原型中搜到
            "name" in person1//如论从原型中获的,还是实例属性中获的,只要存在name属性,都会返回true,因此可以使用in和hasOwnProperty()来判断属性存在于原型中还是实例中
            function hasOwnProperty(obj,name){
                return !obj.hasOwnProperty(name) && (name in obj);//只要(name in obj)返回true,函数返回true时,属性存在于原型中;函数返回false,属性存在于实例中
            }

          //  在使用for-in循环时,返回的是所有能够通过对象访问的、可枚举的属性,其中既包括存在于实例中的属性,也包括存在于原型中的属性。
            //屏蔽了原型中不可枚举属性(即将[[ Enumerable ]]标记为false的属性)的实例属性也会在for-in循环中返回,因为根据规定,所有开发人员定义的属性都是可枚举的--只有在IE8以及更早版本中例外
            var o = {
                toString: function () {
                    return "My Object";
                }
            }
            for(var pro in o){
                if(pro == "toString"){
                    alert("Found toString");//在IE中不会显示
                }
            }

            //要取的对象上所有可枚举的实例属性,可以使用es5中的Object.keys()方法。接收一个对象作为参数,返回一个包含所有可枚举属性的字符串数组。
            function Person(){

            }
            Person.prototype.age = 20;
            Person.prototype.name = "DZZ";
            Person.prototype.sayName = function () {
                alert(this.name);
            };
            var keys = Object.keys(Person.prototype);//参数为原型对象
            alert(keys);//age,name,sayName
            var p1 = new Person();
            p1.name = "YBB";
            p1.age = 24;
            var p1keys = Object.keys(p1);//参数为实例对象
            alert(p1keys);//name,age

            //Object.getOwnPropertyNames()//得到所有的实例属性,无论它是否枚举
            var keys = Object.getOwnPropertyNames(Person.prototype);
            alert(keys);//constructor,age,name,sayName

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值