Object中的三个常见方法(学习笔记)
1.hasOwnProperty---判定属性是否属于对象
//构造函数
function Person(name, sex) {
this.name = name;
this.sex = sex;
}
//原型添加方法
Person.prototype.height = "170";
Person.prototype.eat = function () {
console.log("吃好吃的");
};
//构造函数
function Student(age) {
this.age = age;
}
//有继承了---原型指向改变了
Student.prototype = new Person("小明");
//对象
var stu = new Student(10);
//返回的是布尔值,判断该属性是不是当前对象的
console.log(stu.hasOwnProperty("age"));
//因为js中并没有对hasOwnProperty方法做保护,所以,我们可以私自更改这个方法
var myObj={
age:20,
hasOwnProperty:function (str) {
return false;
}
};
//这个方法是判断有没有这个属性的
console.log(myObj.hasOwnProperty("age"));//false
//此时这个方法不是很容易辨别属性是不是属于某个对象的了
//如果担心上面的问题,此时这么做就可以了
console.log(Object.prototype.hasOwnProperty.call(myObj,"age"));
2.判断一个对象是不是另一个实例对象的原型对象
function Teacher() {
}
var p=new Person("小明",20);//实例对象
Teacher.prototype=p;//改变构造函数的原型指向
var t=new Teacher();//实例对象
//用来判断当前的对象是不是另一个实例对象的原型
console.log(p.isPrototypeOf(t));//true
3.判断这个属性是不是当前对象可以枚举的属性
条件:
-
这个属性必须是属于实例对象的,并且不属性原型中
-
这个属性必须是可枚举的,也就是自定义的属性
-
如果对象没有指定的属性,该方法返回的是false
//能够被for-in遍历的属性是可枚举的
var p1=new Person("小明",10);
//遍历这个对象
for(var key in p1){
console.log(key);
}
//判断这个属性是不是当前对象可以枚举的属性
console.log(p1.propertyIsEnumerable("weight")); //false

浙公网安备 33010602011771号