js Object method

(1)创建对象
	var 对象=Object.create(指定对象,{配置对象});
		
		1、指定对象将会作为赋值对象的原型
		2、配置对象中的属性将会成为赋值对象的属性
		3、配置对象中,属性名:{配置信息}
			value:属性值
			configurable 只有该属性描述符的类型可以被改变并且该属性可以从对应对象中删除,默认false。
			writable:true/false 是否可修改,默认为false
			enumerable:true/fasle 是否可以能用 for in等循环枚举,默认为false

(2)配置对象属性
	Object.defineProperties(指定对象,{属性名:{配置对象}})
	Object.defineProperty(指定对象,'属性名',{配置对象})
		
	    1、为指定对象定义扩展多个属性
	    2、get:function(){}   用来获取当前属性值的回调函数,即obj.属性名
	    3、set:function(外部修改变化的值){}  修改当前属性值触发的回调函数,即obj.属性名=xx;
	    4、this指向指定对象
	    5、配置对象中定义的属性只能通过get来获取,并且无法被修改

(3)对象本身的set、get方法,效果和(2)一样
 	var obj={
		xxx
		get 扩展属性名(){return xxx};
		set 扩展属性名(外部修改的值内容){xxx};
 	}
 	
(4)获取对象的原型类型
	Object.getPrototypeOf(对象)
	例:
		var a = {};
		Object.getPrototypeOf(a) === Object.prototype; // true
		
		var b = 123;
		Object.getPrototypeOf(b) === Number.prototype; // true
		
		var c = 'abc';
		Object.getPrototypeOf(c) === String.prototype; // true
		
		var d = false;
		Object.getPrototypeOf(d) === Boolean.prototype; // true
		
		var e = null;
		Object.getPrototypeOf(e); // TypeError: Cannot convert undefined or null to object
		
		var f = undefined;
		Object.getPrototypeOf(f); // TypeError: Cannot convert undefined or null to object
		
		var g = Symbol('g');
		Object.getPrototypeOf(g) === Symbol.prototype; // true
		
		Object.getPrototypeOf( Object ) === Function.prototype;        // true

		Object.getPrototypeOf( Object )是把Object这一构造函数看作对象,
		返回的当然是函数对象的原型,也就是 Function.prototype。
		
		正确的方法是,Object.prototype是构造出来的对象的原型。
		var obj = new Object();
		Object.prototype === Object.getPrototypeOf( obj );              // true
		
		Object.prototype === Object.getPrototypeOf( {} );               // true

(5)密封对象
	let obj=Object.seal(obj)
	
	密封一个对象会让这个对象:
		(1)变的不能添加新属性,但可以改变现有属性的值
		(2)一个数据属性不能被重新定义成为访问器属性,或者反之
			Object.defineProperty(obj, 'foo', {
			  get: function() { return 'g'; }
			}); // throws a TypeError
		
(6)冻结对象	
	let obj=Object.freeze(obj)
	
	在Object.seal基础上,不能改变现有属性的值

(7)获取对象上的属性(键名),不包括继承来的
	Object.getOwnPropertyNames(对象);	返回数组形式

(8)返回指定对象的原型
	const prototype1 = {};
	const object1 = Object.create(prototype1);
	console.log(Object.getPrototypeOf(object1) === prototype1); true
	
	var obj = new Object();

	Object.getPrototypeOf( Object );               // ƒ () { [native code] }
	Object.getPrototypeOf( Function );             // ƒ () { [native code] }
	
	Object.getPrototypeOf( Object ) === Function.prototype;        // true
	
	Object.getPrototypeOf( Object )是把Object这一构造函数看作对象,
	返回的当然是函数对象的原型,也就是 Function.prototype。
	
	正确的方法是,Object.prototype是构造出来的对象的原型。
	var obj = new Object();
	Object.prototype === Object.getPrototypeOf( obj );              // true
	
	Object.prototype === Object.getPrototypeOf( {} );               // true

Guess you like

Origin blog.csdn.net/weixin_43294560/article/details/113943632