JS学习四(对象)

一、对象的定义

1、var object1={};(对象字面量)
object1 = {
			'x': 1,
			"y": 2,
			username: 'king',
			'for': 'Javascript关键字必须放到引号之间',
			'first-name': 'queen',
			married: true,
			test: null,
			test1: undefined,
			salary: 12.3,
			person: {
				username: 'king',
				age: 12,
				addr: '北京'
			}
		};
		
2、过new Object()创建对象
		var obj = new Object(); //创建一个空对象,{}
		var arr = new Array(); //空数组,[]
		var date = new Date(); //日期时间对象
		var reg = new RegExp('js'); //创建正则对象
		
3、通过构造函数创建
function Test(num1, num2) {
			this.n1 = num1;
			this.n2 = num2;
		}
		var obj5 = new Test(5, 6);
		
4、通过Object.create()创建对象
			var obj = Object.create({
			x: 1
		});
		//创建一个普通的空对象
		var obj = Object.create(Object.prototype);

二、对象的基本操作

var object1 = {
				'x': 1,
				"y": 2,
				username: 'king',
				'for': 'Javascript关键字必须放到引号之间',
				'first-name': 'queen',
				married: true,
				test: null,
				test1: undefined,
				salary: 12.3,
				person: {
					username: 'king',
					age: 12,
					addr: '北京'
				},
				info=function(){
				return this.person.username+"地址:"+this.person.addr;//king地址:北京
			}
			};
			访问属性:object1.username;    //king
			//或者
			object1['married'];    //true
			修改属性:object1.username=‘King1’; //King1
			删除属性:delete obj.username;
			添加属性:object1.other='other'

三、对象的特性

var obj={
	x:1,
	y:2,
	z:3,
	username:'king',	
	age:12,
	addr:'北京'
};

console.log('x' in obj);//是否包含x属性
console.log(obj.hasOwnProperty('x'));//是否包含x属性
console.log(obj.propertyIsEnumerable('x'));//x属性是对象自己的并且是可枚举的返回true

//获取所有属性(包括继承的属性)
for(var p in obj){
	console.log(p);
}
//返回所有自有属性的名称
console.log(Object.getOwnPropertyNames(obj));
console.log(Object.keys(obj));
//定义(修改)属性的特性 
Object.defineProperty(obj,'y',{
	value:56,//设置值
	writable:true,//代表是否可写(默认false)
	enumerable:true,//是否可枚举(默认false)
	configurable:false//是否可配置(默认false)
});

属性特性与属性操作的对应关系:
注:图片来源于麦子学院“”
实例:

	var obj1={
		__proto__:null,//没有继承而来的属性
		value:1
	};
	//创建一个属性
	Object.defineProperty(obj1,'x',{
		value:1,
		writable:false,
		enumerable:false,
		configurable:true
	});
	obj1.x=2;
	console.log(obj1.x);//1
	Object.defineProperty(obj1,'x',{
		value:3,
		writable:true
	});
	console.log(obj1.x);//3
	obj1.x=5;
	console.log(obj1.x);//5
	//如果属性不可配置,但是可以把writable的true变成false,但不能将false变为true
	
	Object.defineProperty(obj1,'y',{
		value:1,
		writable:true,
		enumerable:false,
		configurable:false
	});
	obj1.y=6;//6
	console.log(obj1.y);
	Object.defineProperty(obj1,'y',{
		writable:false
	});
	obj1.y=10;
	console.log(obj1.y);//6
//获取对象的特性描述信息
console.log(Object.getOwnPropertyDescriptor(obj1,'y'));
/*{
		value:1,
		writable:true,
		enumerable:false,
		configurable:false
	}*/
var newObj={x:1};
var NewObj1=Object.create(newObj);
	console.log(NewObj1.isPrototypeOf(newObj));//true
	console.log(Object.prototype.isPrototypeOf(newObj));//true
	
//同时设置多个属性
	var person={};
	Object.defineProperties(person,{
		'username':{
			value:'king',
			writable:true,
			enumerable:true,
			configurable:true
		},
		age:{
			value:12,
			writable:false
		}
	});

	//检测一个对象是否是另外一个对象的原型(或者处于原型链中)
	var obj={x:1};
	var obj1=Object.create(obj);
	console.log(obj.isPrototypeOf(obj1));
	console.log(Object.prototype.isPrototypeOf(obj1));
	Object.isExtensible(obj);//对象是否可扩展
	Object.seal(obj);//将对象设为不可扩展(即将对象设置为不可扩展,同时将对象的所有自有属性都设置为不可配置)
	Object.freeze(obj);//阻止修改现有属性的特性和值,并阻止添加新属性。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值