JavaScript对象及原型链

JavaScript对象及原型链

一、JS对象

1、对象定义
js对象是引用类型,用于存储键值对
2、对象创建
(1)直接量(字面量):适用于创建单个对象,当要创建多个对象会产生大量重复代码;

var person = {
   
	name:'Tom',
	age:20,
}
console.log(person.age);//20

(2)工厂模式:使用函数创建,一般也少用:

function createPerson1(name,age){
   
	var obj = new Object();
	obj.name = name;
	obj.age = age;
	return obj;
}
var person_1 = createPerson1('Tom',30);
console.log(person_1);//{name: "Tom", age: 30}

(3)构造函数模式:

  • 系统自带构造函数:
var person_3 = new Object();
person_3.name = 'Tony';
console.log(person_3.name);
  • 自定义构造函数:
function Teacher(name,age){
   
	this.name = name;
	this.age = age;
}
var teacher_1 = new Teacher('Tom',20);
console.log(teacher_1);//Teacher {name: "Tom", age: 20}

(4)new创建:使用默认构造函数new创建对象

var teacher_2 = new Object();
console.log(teacher_2);//{}

(5)Object.create()创建:括号内参数是对象的原型:

var a = Object.create(new Array(1,2,3,4,5));
console.log(a);//Array {}
console.log(a.length);//5
console.log(a.sort());//Array {0: 1, 1: 2, 2: 3, 3: 4, 4: 5}
var b = Object.create(new String('null'));
console.log(b[3]);//l

3、对象方法:
(1)valueOf():返回当前对象的原始值,但是Math、Error对象是没有valueOf()方法的;

  • Array:返回数组实例
  • Boolean:返回布尔值
  • Date:返回截止目前的毫秒值
  • 函数:函数本身
  • Number:数字值
  • Object:对象本身
  • String:字符串本身

(2)toString()方法:返回当前对象对应的字符串格式:

  • Array:将数组转换为字符串并连接起来使用逗号分隔
  • Boolean:true返回"true",否则"false"
  • Date:返回日期文本表示样式
  • Error:返回一个包含错误信息的字符串
  • 函数:返回function functionName() { [native code] }
  • Number:范湖数字的文本表示样式
  • String:返回String对象值
  • Object:返回object Object

(3)valueOf和toString的区别:

  • valueOf偏向于计算,toString偏向于显示
  • 进行强制转换字符串时优先调用toString,强转为数字时优先调用valueOf()
  • 在有运算符的情况下,valueOf()的优先级高于toString()

4、对象属性
(1)定义和修改属性Object.defineProperty():

  • 语法:Object.defineProperty(obj, prop, descriptor)
  • 参数:obj 需要定义属性的对象;obj 需要定义属性的对象;descriptor 需被定义或修改的属性的描述符,是一个对象形式;
var person = {
   
    name: 'yourname', 
    age: 10
};
Object.defineProperty(person, "sex", {
   
	value: "male",
	enumerable: false			//不可枚举
});

(2)检测属性:

  • in:检查一个属性是否属于某个对象,包括继承来的属性;
var obj = {
   
	name:'Tom',
	age:20
}
console.log('age' in obj);//true
console.log('say' in obj);//false
  • hasOwnProperty():检查一个属性是否属于某个对象自有属性,不包括继承来的属性;
var person = 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值