7个常用属性为:constructor、toString()、toLocaleString()、valueOf()、hasOwnProperty(参数)、propertyIsEnumerable(参数)和isPrototypeOf(参数)
constructor
constructor会默认指向对象的function
var Obj = function() {
this.msg = "OK"
this.send = function() {
console.log(msg)
}
}
var pro = {color : "red"}
// pro.constructor = Obj //如果这条语句实现下面将会返回Obj对象
Obj.prototype = pro
var obj = new Obj()
console.log(obj.constructor) //ƒ Object() { [native code] }
由于将Obj的prototype赋值为pro对象了,所以在调用constructor时没有返回Obj对象而是返回Object对象。我们就可以先将pro的constructor指向obj这样,在调用obj.constructor时就可以返回Obj对象了
toString()
toString将对象转化为字符类型
var array = [1, 2, 3]
var judge = true
var date = new Date()
console.log(typeof(array), array.toString()) //object 1,2,3
console.log(typeof(judge), judge.toString()) //boolean true
console.log(typeof(date), date.toString()) //object Sat Oct 06 2018 14:49:31 GMT+0800 (中国标准时间)
toLocaleString()
toLacleString使用本地化格式生成字符串,多用于时间日期和数字类型
console.log(date.toLocaleString()) //2018/10/6 下午2:40:05
vauleOf()
vauleOf返回原始值
console.log(date.valueOf()) //1538808005755
hasOwnProperty(参数)
hasOwnProperty判断对象是否包含指定属性(不包括穿件对象的function的prototype属性)
console.log(obj.hasOwnProperty("msg")) //true
console.log(obj.hasOwnProperty("color")) //false
第二条语句返回false是因为color存在于obj对象的prototype里面,它只能调用color但是却不是拥有,所以返回false
propertyIsEnumerable(参数)
propertyIsEnumerable判断某个属性是否可以枚举(只有该属性为对象的一部分并且可枚举才会返回true)
var array = [1, 2, 3]
console.log(array .propertyIsEnumerable(1)) //true
console.log(array.propertyIsEnumerable(4)) //false
console.log(array.propertyIsEnumerable("length")) //false
isPrototypeOf(对象)
isPrototypeOf判断某个对象是否是另一个对象的prototype中的属性
console.log(pro.isPrototypeOf(obj)) //true
console.log(obj.isPrototypeOf(pro)) //false