方法1:hasOwnProperty:
- 作用: 用于判断一个对象中是否具有某个自带的属性;
- 语法: 对象.hasOwnProperty(属性名);
- 返回值: 布尔值
var obj = {
age: 12
}
console.log(obj);
var bool= obj.hasOwnProperty("age")
console.log(bool);
方法2: isPrototypeOf
- 作用: 判断这个对象是否在另一个对象的原型上;面向对象可以继承,如果后期对象继承的层级比较多,不知道继承的有没有在原型上可以用它来判断
- 语法: 这个对象.isPrototypeOf(另一个对象)
- 返回值: 布尔值;
var obj = {}
var pbj = {
}
var pbj = Object.prototype
var bool = pbj.isPrototypeOf(obj)
console.log(bool);
方法3: defineProperties: 属于Object构造函数的方法;
语法: Object.defineProperties(对象,{
属性名:{
writable: 布尔值,
enumerable:布尔值,
configurable: 布尔值
}
})
例如:
var obj = {
name: '张三',
age: 12,
eat: function() {
console.log('666');
}
}
Object.defineProperties(obj, {
age: {
writable: false,
enumerable: false,
configurable: false
}
})
控制台:
console.log( obj.age );
delete obj.age
for(var key in obj) {
console.log(key);
}
方法4: propertyIsEnumerable:
- 作用: 判断某个属性是否可遍历;
- 返回值: 布尔值;
var obj = {
name: '张三',
age: 12,
eat: function() {
console.log('666');
}
}
判断age属性是否可遍历:
var bool = obj.propertyIsEnumerable('age');
console.log(bool);
将age变得不可以遍历;
Object.defineProperties(obj,{
age:{
enumerable: false
)
方法5:顶级原型中的toString转字符串:
- 注意事项: 要知道现在调用的是自己原型上的toString ,还是顶级原型上的toString;
查找自己身上的toString:
<script>
var a = 10
console.log(a);
var a = new Number(10)
console.log(a);
var b = a.toString()
console.log(b);
var a = new Boolean(true)
console.log(a);
var obj = {}
var str = obj.toString()
console.log(str);
</script>
精准的检测对象类型的方法toString - 是顶级原型中的toString - 结果是 [object 数据在js中内置的构造函数的名称]
原理: 通过call把this指向改了将数字转换成对象,查找顶级原型的toString;
console.log(Object.prototype.toString.call(10))
console.log(Object.prototype.toString.call(true))
console.log(Object.prototype.toString.call(''))
console.log(Object.prototype.toString.call(new Date))
console.log(Object.prototype.toString.call(/a/))
方法5: valueOf
- 作用: 获取到对象中具体的数据的;用于查看对象的具体的值;
- 返回值: 具体的数据;
常规对象获取具体值:
var obj= {
name:"张三",
age:12
}
console.log( obj.valueOf() );
特殊对象获取的具体值:
var bool = new Boolean(true);
console.log(bool);
console.log(bool.valueOf());
var a = new Number(5)
console.log(a.valueOf());
时间戳:
var date = new Date();
console.dir(date);
console.log(date.valueOf());
方法6:toLocaleString
var obj ={
name: " 张三"
}
console.log(obj.toLocaleString());
数字对象的原型上也有一个方法 - toLocaleString - 可以将数字进行千分位分割:
var a = new Number(123456789);
console.log(a);
console.log(a.toLocaleString());