24 JavaScript对象访问器&JavaScript对象构造器
ES5引入了Getter和Setter
Getter和Setter允许定义对象访问器
JavaScript Getter(get关键字):获取对象属性
<script>
var person = {
name: "lisi",
age: 12,
language: "chi",
get lang() {
return this.language;
}
};
document.getElementById("demo").innerHTML = person.lang;
</script>
JavaScript对象函数方式:
<script>
var car1 = {
name: "bmw",
size: "middle",
price: 10000000,
getName: function(){
return this.name;
},
setName: function(newName){
this.name = newName;
}
}; document.getElementById("demo").innerHTML =
car1.getName();
car1.setName("audi");
document.getElementById("demo").innerHTML =
car1.getName();
</script>
JavaScript Setter(set关键字):设置对象属性
<script>
var car = {
name: "bmw",
size: "middle",
price: 10000000,
set newName(newname){
this.name = newname;
}
};
car.newName = "benz";
document.getElementById("demo").innerHTML = car.name;
</script>
JavaScript对象中,get和set关键字设置的函数调用是以访问属性的形式访问,obj.func = str;
JavaScript对象中,一般函数的访问形式是obj.func(str);
相较之下,get和set方式提供了更简洁的语法。
JavaScript Getter和Setter实现计数器:
<script>
var counter = {
count: 0,
get reset() {
this.count = 0;
},
get increment() {
this.count++;
},
get decrement() {
this.count--;
},
set add(number) {
this.count += number;
},
set subtract(number) {
this.count -= number;
}
};
counter.increment;
counter.add = 100;
counter.decrement;
counter.subtract = 50;
document.getElementById("demo").innerHTML = counter.count;
</script>
Object.defineProperty:为对象添加新属性或者修改已经存在的属性
Object.property(obj,prop,desc)
- obj:需要定义属性的当前对象
- prop:当前需要定义的属性名字(字符串类型)
- desc:对定义属性的描述
Object.defineProperty()实现计数器:
<script>
var counter1 = {
count: 0
};
Object.defineProperty(counter1, "reset", {
get: function () {
this.count = 0;
}
});
Object.defineProperty(counter1, "increment", {
get: function () {
this.count++;
}
});
Object.defineProperty(counter1, "decrement", {
get: function () {
this.count--;
}
});
Object.defineProperty(counter1, "add", {
set: function (number) {
this.count += number;
}
});
Object.defineProperty(counter1, "subtract", {
set: function (number) {
this.count -= number;
}
}); counter1.increment;
counter1.add = 50;
counter1.subtract = 20;
document.getElementById("demo").innerHTML = counter1.count;
</script>
JavaScript对象构造器:
对象构造器不同于单一对象,对象构造器旨在创建对象类型,或者说对象的蓝图。
以下示例中,Person()就是对象构造器函数。
单一对象:
var Person = {
firstName = "",
lastName = "",
age = "",
eyeColor = ""
}
对象构造器:
<script>
//对象构造器
function Person(f,l,age,eyeColor){
this.firstName = f;
this.lastName = l;
this.age = age;
this.eyeColor = eyeColor;
//为构造器添加属性和方法,必须在构造器函数里面添加,不能在外面添加(除非使用原型链prototype)
this.changeName = function(name){
this.lastName = name;
};
}
var zhangsan = new Person("zhangsan","lisi",13,"blue");
var liuliu = new Person("liuliu","qiqi",13,"blue");
document.getElementById("demo").innerHTML = zhangsan.lastName + " " + zhangsan.age; //为第一个对象添加国籍
zhangsan.nationnality = "China";
document.getElementById("demo").innerHTML = zhangsan.nationnality; //为第一个新对象添加方法
zhangsan.fulName = function(){
return zhangsan.firstName + " " + zhangsan.lastName;
};
zhangsan.changeName("alibaba");
document.getElementById("demo").innerHTML = zhangsan.fulName();
</script>
- this指代当前对象,在对象构造器中,this是没有值的,当你创建了一个新对象,他就指代这个新对象。
- this是关键词,不是变量,this的值无法被改变。
- 可以直接在构造器外面为新建对象添加属性和方法
- 只可以在构造器里面为构造器添加属性和方法
24 JavaScript对象访问器&JavaScript对象构造器的更多相关文章
- JavaScript对象访问器属性
对象访问器就是setter和getter,他们的作用就是 提供另外一种方法来获取或者设置对象的属性值, 并且在获取和设置的时候,可以用一定的其他操作. 看下面代码: <script> va ...
- 网页计时访问器application对象
网页计时访问器 application对象代表Web应用本身,整个Web共享一个application对象.开始于服务器打开结束与服务器关闭.在不同的浏览器打开j计时器仍然有作用.除非把服务器关闭 & ...
- 用TypeScript开发Vue——如何通过vue实例化对象访问实际ViewModel对象
用TypeScript开发Vue--如何通过vue实例化对象访问实际ViewModel对象 背景 我个人很喜欢TypeScript也很喜欢Vue,但在两者共同使用的时候遇到一个问题. Vue的实例化对 ...
- JavaScript的访问器
一.访问器属性: 1.Configurable:表示能否通过delete删除属性,从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性.对于直接在对象上定义的属性,这个特性的默认值为tr ...
- JavaScript之面向对象的概念,对象属性和对象属性的特性简介
一.大家都知道,面向对象语言有一个标志,那就是他们都有类的概念,通过类我们可以创建任意多个具有相同属性和方法的对象.但ECMAScript(指定JavaScript标准的机构,也就是说JavaScri ...
- C#基础(204)--对象初始化器,基本数据类型与引用数据类型特点总结,ref,out关键字的使用
对象初始化器: 对象在创建过程中也可以使用对象初始化器完成“属性的初始化” Student stu =new Student(){ StudentId=, StudentName="张三&q ...
- C#属性访问器
属性的访问器包含与获取或设置属性有关的可执行语句.访问器声明可以包含 get 访问器或 set 访问器,或者两者均包含.声明采用下列形式之一:get {}set {} get 访问器get 访问器体与 ...
- javascript对象属性——数据属性和访问器属性
ECMA-262第五版在定义时,描述了属性property的各种特征,定义这些特性是为了实现javascript引擎用的,为了表示该特性是内部值,规范把它们放在了两对儿方括号中,例如[[Enumera ...
- JavaScript对象的两类属性(数据属性与访问器属性)
对JavaScript来说,属性并非只是简单的名称和值,JavaScript用一组特征(attribute)来描述属性 (property). 第一类属性数据属性具有四个特征. value:就是属性的 ...
随机推荐
- 1069 The Black Hole of Numbers (20分)
1069 The Black Hole of Numbers (20分) 1. 题目 2. 思路 把输入的数字作为字符串,调用排序算法,求最大最小 3. 注意点 输入的数字的范围是(0, 104), ...
- c语言中void *和NULL
1. int *str = NULL; #define NULL ((void *)0) 空指针实质上是有指向的指针,但它指向的地址是很小的地址,约定俗成为地址0. 2. void *vo ...
- Linux上查看当前系统各内存分区信息
命令 ulimit -a -a 查看所有信息,同理,也可以例如 ulimit -s 只查看栈占内存信息
- 题解 P5530 [BalticOI 2002]双调路径
P5530 [BalticOI 2002]双调路径 输入样例: 4 5 1 4 2 1 2 1 3 4 3 1 2 3 1 2 3 1 1 4 2 4 2 4 样例如下图 样例说明: 从1到4有4条路 ...
- 【网易官方】极客战记(codecombat)攻略-地牢-橱柜里的骷髅
关卡连接: https://codecombat.163.com/play/level/cupboards-of-kithgard 谁知道什么样的恐怖事情潜伏在 Kithgard 的橱柜里? 简介: ...
- html()和append()
html()方法会替换原有内容,append() 方法在被选元素的结尾插入指定内容.prepend() 方法在被选元素的开头插入指定内容 appendChild() 方法向节点添加最后一个子节点.pr ...
- 使用Newtonsoft序列化对象,实现深拷贝
工作记录 深拷贝:全新创建一个对象,值与复制对象一致,两个对象互不相关,修改一个对象不会影响到另一个对象 浅拷贝:全新创建一个对象,值与复制对象一致,两个对象相关,修改一个对象影响到另一个对象 在工作 ...
- C 语言实例 - 约瑟夫生者死者小游戏
30 个人在一条船上,超载,需要 15 人下船. 于是人们排成一队,排队的位置即为他们的编号. 报数,从 1 开始,数到 9 的人下船. 如此循环,直到船上仅剩 15 人为止,问都有哪些编号的人下船了 ...
- jmeter实现IP欺骗
用jmeter模拟多个IP同时向一个目标发送请求 1.IP地址参数化 在csv文件中编辑参数化IP地址列表,参数化的IP需在同一个局域网,子网掩码相同(比如和客户端本机同一网段),如下 将csv列表中 ...
- Vue - 如何使用npm run build后的dist文件夹
脚手架vue cli生成项目后,使用 npm run build 生成了一个dist文件夹(应该是distribution的缩写) 只要放在http服务器上就可以运行. 使用一句python命令可以搭 ...