Object.prototype的成员介绍
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