建立一个自定义的物件主要有两种方式,一个是透过 new 关键字来建立一个物件实体,再替此物件新增属性与方法,另一个是物件实字(Object literal)直接用大括号 {}
建立物件,并且在建立的同时直接指定属性或方法。
var person = new Object();
person.name = "Rex";
person.age = "25";
person.sayName = function() {
alert( this.name );
};
var person = { // 或直接指定属性跟方法
name: "Rex",
age: "25",
001: "abc-000",
sayName: function() {
alert( this.name );
}
};
因为相对於建构式来说更为简短,而且在易读性跟效能都优於建构函式,所以普遍会比较建议使用物件实字。
而我觉得在新增属性後面是加,
的部分自己较容易搞错,检查时可多加留意。
可以用透过.
跟[]
中括号来进行存取,两者最大的不同是,当物件的索引键命名刚好是不符合 JS 的规则时,[]
中括号可以正确存取。
person.name; // 'Rex'
person.001; // 报错 Uncaught SyntaxError: Unexpected number
person["name"]; // 'Rex'
person["001"]; // 'abc-000'
新增属性跟变数一样直接用=
,若想要删除则透过 delete 关键字来删除:
var person = {};
person.name2 = "Tom";
person.name2; // "Tom"
delete person.name2; // true
person.name2; // 被删除变 undefined
属性不存在会回传 undefined,如果想要检查该属性是否存在有三个方式
console.log(person.name); // 缺点是如果不存在或该属性刚好是 undefined,则都会显示 undefined
person.hasOwnProperty("name"); // 只会检查物件本身
console.log("name" in person); // in 运算子会继续顺着原型链上检查
JS 的阵列可视作一种特别的物件,没有规定一定要放什麽东西,可以是原始资料类型、另一个阵列、物件甚至函数。
要注意的是,阵列是有顺序性的集合,所以只能透过[]
加上索引来存取。
跟物件一样可以透过
var a = new Array();
a[0] = "Tom";
a[1] = "Mike";
a[2] = "Jerry";
a.length; // 3
var b = [];
b[0] = "Tom";
b[1] = "Mike";
b[2] = "Jerry";
b.length; // 3
或者直接输入值,不用再次输入变数跟顺序,各有利弊看情况使用
var c = ["Tom", "Mike", "jerry"];
c.length; // 3
阵列与字串一样可以透过 length 属性取得,而在阵列时 length 又可以被覆写,如果原本 b.length = 3,覆写成 b.length = 1, 後面的值就会被移除,如果覆写成 b.length = 5,没有的值会显示 empty。
b.length = 1, 剩下 Tom,Mike 跟 Jerry 被移除
b.length = 5,没有的值会显示 empty
参考资料:
卡斯柏 - JS 物件名词解释及常见观念问题
0 陷阱!0 误解!8 天重新认识 JavaScript!
>>: Unity自主学习(五):Unity安装失败如何解决
strlen() 字串长度计算 计算长度的方法还有一种是,我们利用宣告变数为0,然後去判断我们字串...
在OE的order_items和product_infortation资料表中,依照产品被订购次数由...
reduce() reduce 很常用在计算累加上面。 之前介绍的方法,大多都是将阵列的值一个一个放...
我们能够做完一个网页後,接下来我们可以让这个网页有更多的动态、趣味性,今天要介绍的动画效果trans...
v-model 修饰符 Vue 里面为 v-model 提供了一些可以用的修饰符,主要是可以帮我们限...