Js-w3school(2020

本文介绍了JavaScript中的对象特性,包括使用getter和setter操作对象属性,利用Object.defineProperty()方法添加属性和方法,以及对象构造器的使用。还探讨了对象原型的概念,展示了如何通过prototype添加属性和方法,并强调了不修改标准JavaScript对象原型的重要性。最后,概述了ES5中的一些对象方法,如defineProperty和getOwnPropertyNames。
摘要由CSDN通过智能技术生成

}

};

// 使用 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”

};

// 添加属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值