Object.prototype中的成员介绍

  Object.prototype 中的成员:
1、constructor 构造器(构造函数)
作用:获取构造函数的引用
原型中提供的这个属性。 

默认情况下:构造函数.pototype中的 constructor属性 指向了 构造函数

                举例:

Object.prototype.constructor === Object

function Student() {}
console.log(Student.prototype.constructor === Student);
console.log(Object.prototype.constructor === Object);
2、hasOwnProperty
作用:看下是否有自己的属性,如果属性是自己的,就返回true,否则返回false
has 有     own 自己的      property 属性

语法:对象.hasOwnProperty(属性);返回值:true 或者 false

               举例:

var obj = {
name1: "jack"
};
var b = obj.hasOwnProperty("name1"); 
console.log(b);// true
 var b = obj.hasOwnProperty("age"); 
console.log(b);// false
 var b = obj.hasOwnProperty("toString"); 
console.log(b);// false
3、isPrototypeOf
var 布尔值 = 对象1.isPrototypeOf(对象2)
作用:判断对象1 是否是 对象2 的原型,如果是则返回true,否则返回false(不严谨)
           如果对象2的原型链上有 对象1 此时就返回 true,否则返回false(严谨)

 is 是     prototype 原型     of ...的

            举例:

 function Person() {}
 p -> Person.prototype -> Object.prototype -> null

 var p = new Person();

         console.log(p.isPrototypeOf(Person.prototype)); // false
 console.log(Person.prototype.isPrototypeOf(p)); // true
 console.log(Object.prototype.isPrototypeOf(p)); // true
 console.log(p.isPrototypeOf(p)); // false
4、 propertyIsEnumerable
property 属性     is 是     enumerable 可枚举的(循环便利)
语法:对象1.propertyIsEnumerable(属性1) 
作用:看下对象1中的 属性1 是否是可枚举的,并且要求属性是自己的,如果是就返回true,否则返回false
① 看下属性是否是自己的   ② 属性是否是可枚举的
 var obj = {
// name1: "jack"
 };
var b = obj.propertyIsEnumerable("name1");
 console.log(b); // true
var b = obj.propertyIsEnumerable("age");
console.log(b); // false
 var b = obj.propertyIsEnumerable("toString");
 console.log(b); // false
 for(var k in obj) {
  console.log(k);
 }
 ES5中的内容(了解)
 Object.defineProperty(obj, "name1", {
value: "rose",
enumerable: false
 });
 var b = obj.propertyIsEnumerable("name1");
console.log(b); // false
for(var k in obj) {
console.log(k);
}
 console.log(obj.name);
        5、 toLocaleString / toString / valueOf
var d = new Date();
console.log(d.toString());               // 标准时间
console.log(d.toLocaleString());     // 本地时间
var obj = {};
 console.log(obj.valueOf());
console.log(obj.toString());            //"[object Object]"
console.log(d.toString());              // 结果类型是字符串
 console.log(d.valueOf());             // 结果类型是数值,时间的值为毫秒值
var obj = {};
console.log(obj + 1);                     // "[object Object]1"
 console.log(parseInt(obj + 1));     // NaN

var obj = {
toString: function() {
return "abc";
},
valueOf: function() {
return 100;
}
};
 对象在参与+操作的时候,先使用 valueOf方法,然后在使用 toString
console.log(obj + 1);         // 101  结果类型是数值
console.log(obj + "a");      // 1001  结果类型是字符串

       6、 instanceof 运算符

              作用:看下构造函数(Person)的prototype属性的值是否在 对象p 的原型链上,如果在就返回true ,否则就                          返回false 。

      语法:对象p instanceof 构造函数Person
               判断的本质就是回答下面两个问题:
① 对象的原型链 是什么时候定下来的?
② 当前构造函数的prototype的值是谁?
规律:
如果对象在被创建之后,构造函数的prototype没有改变过,就返回true,否则,返回false。
                任何一个对象 instanceof Object 都是 true。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值