(三)对象方法
1.JavaScript 方法是包含函数定义的属性。方法是存储为对象属性的函数。
2.this
在 JavaScript 中,被称为 this 的事物,指的是拥有该 JavaScript 代码的对象。
this 的值,在函数中使用时,是“拥有”该函数的对象。
请注意 this 并非变量。它是关键词。您无法改变 this 的值。
3. 访问对象方法
请使用如下语法创建对象方法:
methodName : function() { 代码行 }
请通过如下语法来访问对象方法:
objectName.methodName()
4.添加新的方法
向对象添加方法是在构造器函数内部完成的
(四)对象访问器
1.JavaScript 访问器(Getter 和 Setter)
ECMAScript 5 (2009) 引入了 Getter 和 Setter。
Getter 和 Setter 允许您定义对象访问器(被计算的属性)。
2.Getter
// 创建对象:
var person = {
firstName: “Bill”,
lastName : “Gates”,
language : “en”,
get lang() {
return this.language;
}
};
// 使用 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 对象
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”
最后
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
自学效果低效漫长且无助。**
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
[外链图片转存中…(img-adpGTyie-1715540241863)]
[外链图片转存中…(img-bTlK85GR-1715540241863)]
[外链图片转存中…(img-TNXj2PIJ-1715540241863)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!
如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!