}
};
// 使用 getter 来显示来自对象的数据:
document.getElementById(“demo”).innerHTML = person.lang;
3. Setter
var person = {
firstName: “Bill”,
lastName : “Gates”,
language : “”,
set lang(lang) {
this.language = lang;
}
};
// 使用 setter 来设置对象属性:
person.lang = “en”;
// 显示来自对象的数据:
document.getElementById(“demo”).innerHTML = person.language;
4.Object.defineProperty() 方法也可用于添加 Getter 和 Setter
// 定义对象
var obj = {counter : 0};
// 定义 setters
Object.defineProperty(obj, “reset”, {
get : function () {this.counter = 0;}
});
Object.defineProperty(obj, “increment”, {
get : function () {this.counter++;}
});
Object.defineProperty(obj, “decrement”, {
get : function () {this.counter–;}
});
Object.defineProperty(obj, “add”, {
set : function (value) {this.counter += value;}
});
Object.defineProperty(obj, “subtract”, {
set : function (value) {this.counter -= value;}
});
// 操作计数器:
obj.reset;
obj.add = 5;
obj.subtract = 1;
obj.increment;
obj.decrement;
(五)对象构造器
1.创建一种“对象类型”的方法,是使用对象构造器函数。
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
2.与向已有对象添加新属性不同,您无法为对象构造器添加新属性:
Person.nationality = “English”;//undefined
如需向构造器添加一个新属性,您必须添加到构造器函数. 这样对象属性就可以拥有默认值。
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.nationality = “English”;
}
方法也是
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
this.name = function() {return this.firstName + " " + this.lastName;};
}
3.JavaScript 提供用于原始对象的构造器:
var x1 = new Object(); // 一个新的 Object 对象
var x2 = new String(); // 一个新的 String 对象
var x3 = new Number(); // 一个新的 Number 对象 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】
var x4 = new Boolean(); // 一个新的 Boolean 对象
var x5 = new Array(); // 一个新的 Array 对象
var x6 = new RegExp(); // 一个新的 RegExp 对象
var x7 = new Function(); // 一个新的 Function 对象
var x8 = new Date(); // 一个新的 Date 对象
Math() 对象不再此列。Math 是全局对象。new 关键词不可用于 Math。
4.推荐初始化方法
var x1 = {}; // 新对象
var x2 = “”; // 新的原始字符串
var x3 = 0; // 新的原始数值
var x4 = false; // 新的原始逻辑值
var x5 = []; // 新的数组对象
var x6 = /()/ // 新的正则表达式对象
var x7 = function(){}; // 新的函数对象
(五)对象原型
1.所有 JavaScript 对象都从原型继承属性和方法。
日期对象继承自 Date.prototype。数组对象继承自 Array.prototype。Person 对象继承自 Person.prototype。
Object.prototype 位于原型继承链的顶端:
日期对象、数组对象和 Person 对象都继承自 Object.prototype。
2. prototype 属性
JavaScript prototype 属性允许您为对象构造器添加新属性
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.nationality = “English”;
JavaScript prototype 属性也允许您为对象构造器添加新方法:
function Person(first, last, age, eyecolor) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eyecolor;
}
Person.prototype.name = function() {
return this.firstName + " " + this.lastName;
};
3.请只修改您自己的原型。绝不要修改标准 JavaScript 对象的原型。
(六)ES5对象方法
Object.defineProperty(object, property, descriptor) // 添加或更改对象属性
Object.defineProperties(object, descriptors) // 添加或更改多个对象属性
Object.getOwnPropertyDescriptor(object, property) // 访问属性
Object.getOwnPropertyNames(object) // 以数组返回所有属性
Object.keys(object) // 以数组返回所有可枚举的属性
Object.getPrototypeOf(object) // 访问原型
Object.preventExtensions(object) // 阻止向对象添加属性
Object.isExtensible(object) // 如果可将属性添加到对象,则返回 true
Object.seal(object) // 防止更改对象属性(而不是值)
Object.isSealed(object) // 如果对象被密封,则返回 true
Object.freeze(object) // 防止对对象进行任何更改
Object.isFrozen(object) // 如果对象被冻结,则返回 true
1.更改属性值
Object.defineProperty(object, property, {value : value})
2. 更改元数据
writable : true // 属性值可修改
enumerable : true // 属性可枚举
configurable : true // 属性可重新配置
writable : false // 属性值不可修改
enumerable : false // 属性不可枚举
configurable : false // 属性不可重新配置
// 定义 getter
get: function() { return language }
// 定义 setter
set: function(value) { language = value }
3.列出属性
var person = {
firstName: “Bill”,
lastName : “Gates”
language : “EN”
};
Object.defineProperty(person, “language”, {enumerable:false});
Object.getOwnPropertyNames(person); // 返回属性数组
Object.keys(person); // 返回可枚举属性的数组(除了language)
4.defineProperty添加属性但是不能添加方法
// 创建对象
var person = {
firstName: “Bill”,
lastName : “Gates”,
language : “EN”
};
// 添加属性