对象常用方法

<!DOCTYPE html>
<html>
<head>
<title>对象常用方法</title>
</head>
<body>


<script type="text/javascript">


// 1. isPrototypeOf();


// Person.prototype.isPrototypeOf(p1); // true


// 2. Object.getPrototypeOf(); 根据实例对象寻找原型对象


function Person() {


}


Person.prototype.name = "z3";
Person.prototype.age = 20;
Person.prototype.sayName = function() {
alert("我是原型对象的方法");
}
/*
var p1 = new Person();
alert(Object.getPrototypeOf(p1) == Person.prototype); // true


*/
/* var p2 = new Person();
alert(p2.name); // z3
p2.name = "w5";
alert(p2.name); // w5
// 代码读取一个是对象属性的时候,首先进行一次搜索,在实例对象中查找name属性,若没有,再在原型对象中查找name属
// 性,若没有返回undefined; 用delete关键字删除实例属性之后,可得到原型属性


delete p2.name;
alert(p2.name); // z3
*/

// 3. 判断一个对象是属于原型属性,还是属于实例属性. 


// 3.1 obj.hasOwnProperty(); 判断是否属于对象本身,即实例属性
/* var p3 = new Person();
alert(p3.hasOwnProperty('name')); // false
p3.name = "m7";
alert(p3.hasOwnProperty('name')); // true
*/
// 3.2 in操作符 for-in  判断属性是否再实例对象或者原型对象中
var p1 = new Person();
alert('name' in p1); // true


// 3.3 判断一个属性是否只在原型对象中


function hasPrototypeProperty(object, name) {
return !object.hasOwnProperty('name') && 'name' in object ;
}


alert(hasPrototypeProperty(p1, 'name')); // true


// 4. Object.keys(); 返回数组,枚举出实例对象的属性,不包含原型属性,不包含不可枚举属性,例如constructor属性


p1.name = "z3";
p1.age = 20;
alert(Object.keys(p1)); // name,age


// 4.2 Object.getOwnPropertyNames(); 返回所有可枚举和不可枚举属性


alert(Object.getOwnPropertyNames(Person.prototype)); // constructor,name,age,sayName




</script>


</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值