3.Object.prototype的成员介绍
Object.prototype是js中所有的对象的祖宗
Object.prototype中所有的成员都可以被js中所有的对象使用!
3.1. 方法: hasOwnProperty
语法: 对象.hasOwnProperty("属性名")
功能: 判断当前对象自身是否拥有指定的属性!
// var obj = {// name: "胡聪聪"// };// console.log("toString" in obj);//ture (in判断的是当前对象能否访问.toString方法)// console.log(obj.hasOwnProperty("toString"));//false ( 判断当前对象自身是否拥有指定的属性)
3.2. 方法: isPrototypeOf
语法: 对象.isPrototypeOf(另一个对象)
功能: 判断当前对象是否是另外一个对象的原型
// var obj = {// name: "王思聪"// } // var obj1 = {// name: "王健林"// }// obj.__proto__ = obj1; // console.log(obj1.isPrototypeOf(obj));//true
3.3 .方法: propertyIsEnumerable
// 语法: 对象.propertyIsEnumerable("属性名")
// 功能: 首先判断属性是否属于对象本身,再判断这个属性能否被(for-in)遍历,同时满足这两个条件,才会返回true
//对象的属性能否被(for in)遍历,可以设置的!
//怎么设置
//Object.defineProperty// var obj = {// name: "123"// }// var obj1 = {// money: 99999// }// var obj2 = {// house: "大别墅"// } // obj.__proto__ = obj1;// obj1.__proto__ = obj2; // for(var k in obj){// console.log(k);//name money house// }// console.log(obj.propertyIsEnumerable("name"));//true// console.log(obj.propertyIsEnumerable("money"));//false
3.4. toString和toLocaleString都是将对象转换成字符串
//toLocaleString是将对象转换成本地格式的字符串(时间字符串)// var obj = new Date();// console.log(obj.toLocaleString()); //2017-8-2 19:30:32// console.log(obj.toString()); //Wed Aug 02 2017 19:30:32 GMT+0800 (中国标准时间)//Object.prototype.toString.call(对象) 对象自身有.toString属性,Object原型也有,这个方法可以直接用Object原型的方法var obj = new Date();console.log(obj.toString());//Wed Aug 02 2017 19:35:23 GMT+0800 (中国标准时间)console.log(Object.prototype.toString.call(obj));//[object Date]var arr = [];console.log(arr.toString());//""console.log(Object.prototype.toString.call(arr));//[object Array] object==> typeof arr Array==> 构造函数 console.log(obj.constructor.toString()); //function Date() { [native code] }
3.5. valueOf
{}.valueOf() //{}[].valueOf() //()//获取对象的值 //当引用类和值类型数据运算的时候,会先调用valueOf方法,尝试使用返回值运算,如果不能运算,就继续调用toString方法获取返回值运算!// var obj = {// valueOf: function () {// return 1// }// };// console.log(obj + 1);//2