这是我参与8月更文挑战的第11天,活动详情查看:8月更文挑战markdown
JavaScript 的对象是无序属性的集合, 其属性能够包含基本值、对象或函数。对象就是一组没有顺序的值。咱们能够把 JavaScript 中的对象想象成键值对,其中值能够是数据和函数。app
对象的行为和特征:函数
对象字面量语法:{}post
内部能够存放多条数据,数据与数据之间用逗号分隔,最后一个后面不要加逗号。ui
每条数据都是有属性名和属性值组成,键值对写法:k: vthis
//经过对象字面量建立一个对象
var obj = {
name: "lucy",
age: 18,
sex: "female",
sayHi: function () {
console.log("hello");
}
};
复制代码
用对象的变量名打点调用某个属性名,获得属性值。url
在对象内部用 this 打点调用属性名。this 替代对象。spa
用对象的变量名后面加 [] 调用,[] 内部是字符串格式的属性名。3d
调用方法时,须要在方法名后加 () 执行。code
<script>
var obj = {
name: "lucy",
age: 18,
sex: "female",
sayHi: function () {
console.log(this.name+" say hello!");
}
}
console.log(obj.name);
console.log(obj.age);
obj.sayHi();
//中括号调用方法
console.log(obj["name"]);
obj["sayHi"]();
</script>
复制代码
//更改
obj.age=20;
console.log(obj);
//添加
obj.weight = 120;
console.log(obj);
//删除
delete obj.sex;
console.log(obj);
复制代码
Object() 构造函数,是一种特殊的函数。主要用来在建立对象时初始化对象, 即为对象成员变量赋初始值,总与 new 运算符一块儿使用在建立对象的语句中。
构造函数用于建立一类对象,首字母要大写。
构造函数要和 new 一块儿使用才有意义
<script>
//new Object()建立对象
var person = new Object(); //建立了一个新的空对象
person.name="lucy";
person.age=18;
person.sex=true;
person.sayHi = function(){
console.log("hello");
}
console.log(person);
</script>
复制代码
new 在执行时会作四件事情
• new 会在内存中建立一个新的空对象
• new 会让 this 指向这个新的对象
• 执行构造函数 (目的:给这个新对象加属性和方法)
• new 会返回这个新对象
若是要建立多个相似的对象,能够将 new Object() 过程封装到一个函数中,未来调用函数就能建立一个对象,至关于一个生产对象的函数工厂,用来简化代码。
<script>
//工厂方法至关于对new Object()方法的封装
function createperson(name,age,sex){
//建立一个空对象
var person = new Object();
//添加属性和方法
person.name = name;
person.age = age;
person.sex = sex;
person.sayHi = function(){
console.log("hello");
}
//将对象做为函数的返回值
return person;
}
var p1 = createperson("lucy",18,"female");
var p2 = createperson("mary",25,"female");
console.log(p1,p2);
</script>
复制代码
比工厂方法更加简单。
自定义一个建立具体对象的构造函数,函数内部不须要 new 一个构造函数的过程,直接使用 this 代替对象进行属性和方法的书写,也不须要 return 一个返回值。
使用时,利用 new 关键字调用自定义的构造函数便可。
注意:构造函数的函数名首字母须要大写,区别于其余普通函数名。
<script>
//定义一个构造函数,首字母必须大写
function Person(name,age,sex){
//不须要使用new建立一个新对象
//用this替代未来建立的新对象
this.name = name;
this.age = age;
this.sex = sex;
this.sayHi = function(){
console.log("hello");
}
//不须要return, 由于经过new实现了
}
//用new关键字调用构造函数
var p1 = new Person("lucy",18,"female");
console.log(p1);
</script>
复制代码
for in 循环也是循环的一种,专门用来遍历对象,内部会定义一个 k 变量, k 变量在每次循环时会从第一个开始接收属性名,一直接收到最后一条属性名,执行完后跳出循环。
<script>
//定义一个构造函数,首字母必须大写
function Person(name,age,sex){
//不须要使用new建立一个新对象
//用this替代未来建立的新对象
this.name = name;
this.age = age;
this.sex = sex;
this.sayHi = function(){
console.log("hello");
}
//不须要return, 由于经过new实现了
}
//用new关键字调用构造函数
var p1 = new Person("lucy",18,"female");
console.log(p1);
//遍历
for(var k in p1){
console.log(k+"项的属性值是:"+p1[k])
}
</script>
复制代码