JS-面向对象编程(Object常用方法)

148 阅读2分钟

Object.keys(对象)

			var arr = ['a','b','c'];
			console.log(Object.keys(arr));//(3) ["0", "1", "2"]
			var obj = {
				0: 'e',
				1: 'f',
				2: 'j'
			}
			console.log(Object.keys(obj));//(3) ["0", "1", "2"]

Object.getOwnPropertyNames()

//接收一个对象作为参数,返回一个数组,包含了该对象自身的所有属性名
//可将不可枚举的属性遍历出来 例如length
//keys()返回可枚举的属性
var arr = ['a','b','c'];
console.log(Object.getOwnPropertyNames(arr));//(4) ["0", "1", "2", "length"]
var obj = {
    0: 'e',
    1: 'f',
    2: 'j'
}
console.log(Object.getOwnPropertyNames(obj));//(3) ["0", "1", "2"]

Object.getPrototypeOf()

//参数是该对象,返回该对象的原型,也是获取原型对象的标准方法
function Fn(){};
var f1 = new Fn();
console.log(Object.getPrototypeOf(f1) === Fn.prototype);//true
function f(){};
console.log(Object.getPrototypeOf(f) === Function.prototype);//true

Object.setPrototypeOf()

//接收两个参数,第一个参数是现有对象,第二个是原型对象
var a = {};
var b = {x : 1};
//把b的对象作为a的原型
Object.setPrototypeOf(a,b);
console.log(a.x);//1
console.log(Object.getPrototypeOf(a));//{x: 1}

Object.creat()

//一个实例对象生成另一个实例对象
//接收一个对象作为参数,以它为原型,返回一个实例对象
var a = {
    hello:function(){
        console.log('hello');;
    }
}
var b = Object.create(a);
console.log(Object.getPrototypeOf(b) === a);//true
b.hello();//hello

Object.prototype.valueOf()

//返回当前对象的值,默认情况返回对象本身
var obj = new Object();
//用自定义的Object.valueOf会覆盖Object.prototype.valueOf
obj.valueOf = function(){
    return 2;
}
console.log(obj.valueOf() === obj);//true
console.log(1 + obj);//3

Object.prototype.toString()

//返回一个对象的字符串形式,默认返回类型字符串
var obj2 = {a : 1};
console.log(obj2.toString());//[object Object]
obj2.toString = function(){
    return 'hello';
}
console.log(obj2.toString());//hello
//每个对象定制了自己的toString方法覆盖了Object里的toString方法
var arr = [1,2,3];
console.log(arr.toString());//1,2,3
console.log('123'.toString());//123
console.log((function(){
    return 123;
}).toString());
/*function(){
    return 123;
}*/
console.log((new Date()).toString());//Wed Apr 29 2020 21:38:46 GMT+0800 (中国标准时间

Object.prototype.toLocaleString()

//根据用户所在地返回对应的结果
console.log((new Date()).toLocaleString());//2020/4/29 下午9:41:55

Object.prototype.isPrototypeOf()

//用来判断该对象是否是另一个对象的原型
var o1 = {};
var o2 = Object.create(o1);
var o3 = Object.create(o2);
console.log(o2.isPrototypeOf(o3));//true
console.log(o1.isPrototypeOf(o3));//true
console.log(Object.prototype.isPrototypeOf({}));//true
console.log(Object.prototype.isPrototypeOf([]]));//true

Object.prototype.hasOwnProperty()

//接收字符串作为参数,返回一个布尔值,表示该实例对象是否有该属性
var obj = {
    a:123
}
//看实例obj中有没有a属性
console.log(obj.hasOwnProperty('a'));//true
//只校验实例属性,继承属性不校验
console.log(obj.hasOwnProperty('toString'));//false