JavaScript对象是一种无序的集合数据类型,它由若干键值对组成。它可以存储任何类型的数据,包括字符串、数字、布尔值、函数、对象甚至其他JavaScript对象。
var person = { name: "John", age: 30, city: "New York" };
JavaScript对象有很多优势,其中最重要的是它可以存储多个不同类型的数据,而不必将它们分开存储。此外,JavaScript对象还可以用于创建复杂的数据结构,如树形结构或图形。
JavaScript对象也可以用于创建函数,这些函数可以在特定情况下执行特定功能。例如,一个函数可以在特定条件下执行特定功能,而另一个函数可以在其他条件下执行其他功能。此外,JavaScript对象还可用于创建面向对象的应用程序。
JavaScript中的对象是动态的。 我们可以添加和删除属性需要。
有两种基本的创建对象的方法:
例如:
var book1 = {
name : "Javascript"
};
var book2 = new Object();
book2.name = "Javascript";
book1.website = "www..cn";
book2.website = "www..cn";
book1.name = "CSS";
book2.name = "HTML";
console.log(book1.name);
console.log(book1.website);
console.log(book2.name);
console.log(book2.website);
上面的代码生成以下结果。
book1和book2都是具有name属性的对象。然后,为这两个对象分配一个网站
属性。
我们可以在对象或更高版本的定义之后添加属性。
对象打开以进行修改,除非您另行指定。
当一个属性首次添加到对象时,JavaScript在对象上使用一个名为[[Put]]的内部方法。
[[Put]]方法在对象中创建一个存储来存储属性。
[[Put]]
在对象上创建一个属性。
该属性称为自有属性。
新添加的属性(自己的属性)表示对象的特定实例具有该属性。
属性(自己的属性)直接存储在实例上。
将新值分配给现有属性时,调用称为 [[Set]]
的单独操作。
[[Set]]操作将使用新的属性替换当前值。
检查对象中是否存在属性使用运算符中的。
运算符中的在特定的查找具有给定名称的属性
对象,并返回true如果找到它。
以下代码显示了如何使用中的来检查book1对象中的一些属性:
var book1 = {
name : "Javascript"
};
var book2 = new Object();
book2.name = "Javascript";
book1.website = "www..cn";
book2.website = "www..cn";
book1.name = "CSS";
book2.name = "HTML";
console.log("name" in book1); // true
console.log("age" in book1); // true
console.log("title" in book1); // false
上面的代码生成以下结果。
我们可以以同样的方式检查方法的存在。
以下向book1添加了一个新函数writeLine(),并在中使用确认功能的存在。
var book1 = {
name : "Javascript",
writeLine : function() {
console.log(this.name);
}
};
console.log("writeLine" in book1); // true
上面的代码生成以下结果。
以下显示如何区分自己的属性和建筑属性。
操作符中的检查自己的属性和原型属性。
hasOwnProperty()
方法存在于所有对象上仅当给定属性存在且是自己的属性时才返回true。
以下代码比较在中使用的结果
hasOwnProperty()
在book1的不同属性:
var book1 = {
name : "Javascript",
writeLine : function() {
console.log(this.name);
}
};
console.log("name" in book1);
console.log(book1.hasOwnProperty("name"));
console.log("toString" in book1);
console.log(book1.hasOwnProperty("toString"));
上面的代码生成以下结果。
将属性设置为 null
不会从对象中完全删除该属性。
这样的操作调用 [[Set]]
,值为null,只有替换属性的值。
delete
运算符完全从对象中删除一个属性。
delete
运算符在单个对象属性上工作,并调用内部操作名为 [[Delete]]
。
当删除操作成功时,它返回true。
以下代码显示如何使用delete操作符。
var book1 = {
name : "Javascript"
};
console.log("name" in book1);
delete book1.name;
console.log("name" in book1);
console.log(book1.name);
上面的代码生成以下结果。
默认情况下,添加到对象的所有属性都是可枚举的。
我们可以使用for-in循环遍历这些属性。
可枚举属性的[[Enumerable]]属性设置为true。
以下循环输出对象的属性名称和值:
var property;
var book1 = {
name : "Javascript"
};
var property;
for (property in book1) {
console.log("Name: " + property);
console.log("Value: " + book1[property]);
}
上面的代码生成以下结果。
Object.keys()
方法检索ienumerable属性名称的数组,如下所示:
var book1 = {
name : "Javascript"
};
var properties = Object.keys(book1);
var i, len;
for (i=0, len=properties.length; i < len; i++){
console.log("Name: " + properties[i]);
console.log("Value: " + book1[properties[i]]);
}
上面的代码生成以下结果。
for-in循环枚举原型属性,而Object.keys()仅返回自己的(实例)属性。
并非所有属性都是可枚举的。
对象上的大多数本地方法都有其[[Enumerable]]属性集假。
我们可以通过使用propertyIsEnumerable()方法来检查属性是否可枚举,它存在于每个对象上:
var book1 = {
name : "Javascript"
};
console.log("name" in book1);
console.log(book1.propertyIsEnumerable("name"));
var properties = Object.keys(book1);
console.log("length" in properties);
console.log(properties.propertyIsEnumerable("length"));
上面的代码生成以下结果。
JavaScript 中的所有事物都是对象:字符串、数值、数组、函数...此外,JavaScript 允许自定义对象。所有事物都是对象 JavaScript...
window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面。这种方法既可以用于具有onclick事件的标签,...
变量是用于存储信息的"容器"。 实例 var x=5;var y=6;var z=x+y;就像代数那样 x=5y=6z=x+y在代数中,我们使用字母(比如 x)来保...
JavaScript 的 Number 对象是经过封装的能让你处理数字值的对象,由 Number() 构造器创建。JavaScript 只有一种数字类型。可以使...
JavaScript提供了一组位运算符,可以用来做简单的位运算。与Java等语言不同,JavaScript的数值型默认是浮点型,在进行位运算的时...