Js-w3school(2024(11)

(三)对象方法

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前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
自学效果低效漫长且无助。**

因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

[外链图片转存中…(img-adpGTyie-1715540241863)]

[外链图片转存中…(img-bTlK85GR-1715540241863)]

[外链图片转存中…(img-TNXj2PIJ-1715540241863)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点!不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值