说说Javascript中Object的prototype属性对象里的常用属性

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

猜你喜欢

转载自blog.csdn.net/suorce/article/details/82951516