JS对象---对象构造器
转载自:https://blog.csdn.net/m0_53170889/article/details/119341776
=======================================
文章目录
JS 对象构造器
实例:
function Person(first, last, age, eye) {
this.firstName = first;
this.lastName = last;
this.age = age;
this.eyeColor = eye;
}
- 函数Person() 就是对象构造器函数
- 用大写首字母对构造器函数命名是个好习惯。
对象类型 (蓝图)(类)
使用关键字new 和对象文字创建的对象是单一对象
需求:
有时我们需要创建相同"类型"的许多对象的"蓝图"
创建一种"对象类型"的方法:
使用对象构造器函数
使用语法:
通过new 关键词调用构造器函数可以创建相同类型的对象
var myFather = new Person("Bill", "Gates", 62, "blue");
var myMother = new Person("Steve", "Jobs", 56, "green");
this 关键词
在 JavaScript 中,被称为 this 的事物是代码的“拥有者”。
this 的值,在对象中使用时,就是对象本身。
在构造器函数中,**this 是没有值的。**它是新对象的替代物。 当一个新对象被创建时,this 的值会成为这个新对象。
请注意 this 并不是变量。它是关键词。您无法改变 this 的值。
为对象添加属性
为已有的对象添加新属性很简单:
实例
myFather.nationality = "English";
新属性被添加到 myFather
。不是 myMother
,也不是任何其他 person
对象。
为对象添加方法
为已有的对象添加新方法很简单:
实例
myFather.name = function () {
return this.firstName + " " + this.lastName;
};
新方法被添加到 myFather
。不是 myMother
,也不是任何其他 person
对象。
为构造器添加属性
与向已有对象添加新属性不同,您无法为对象构造器添加新属性:
实例
Person.nationality = "English";//无效的,nationality is 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;};
}
与向已有对象添加新方法不同,您无法为对象构造器添加新方法。
必须在构造器函数内部向一个对象添加方法:
实例
function Person(firstName, lastName, age, eyeColor) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
this.eyeColor = eyeColor;
this.changeName = function (name) {
this.lastName = name;
};
}
//changeName() 函数把 name 赋值给 person 的 lastName 属性。
myMother.changeName("Jobs");
通过用 myMother 替代 this,JavaScript 可以获知目前处理的哪个 Person
。
内建的JS 构造器
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。
您知道吗?
正如以上所见,JavaScript 提供原始数据类型字符串、数字和布尔的对象版本。但是并无理由创建复杂的对象。原始值快得多!
-
请使用对象字面量
{}
代替new Object()
。 -
请使用字符串字面量
""
代替new String()
。 -
请使用数值字面量代替
Number()
。 -
请使用布尔字面量代替
new Boolean()
。 -
请使用数组字面量
[]
代替new Array()
。 -
请使用模式字面量代替
new RexExp()
。 -
请使用函数表达式
() {}
代替new Function()
。
实例
var x1 = {}; // 新对象
var x2 = ""; // 新的原始字符串
var x3 = 0; // 新的原始数值
var x4 = false; // 新的原始逻辑值
var x5 = []; // 新的数组对象
var x6 = /()/ // 新的正则表达式对象
var x7 = function(){}; // 新的函数对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 记一次.NET内存居高不下排查解决与启示