JavaScript快速入门(7):对象

心已入冬 提交于 2020-01-23 05:37:25

本系列随笔是本人的学习笔记,初学阶段难免会有理解不当之处,错误之处恳请指正。另:转载请注明出处。

简介

JavaScript 中,对象可以看做是“属性”的集合(这里的“属性”不仅是属性名,而是一个键/值对,即属性名和属性值)。

 

对象的创建方式

JavaScript 中可以用以下三种方式创建对象:

  1. 直接使用字面值对象(看起来同JSON格式);
  2. 使用 new 运算符创建(new 后面跟一个构造函数调用,JavaScript 中没有“类”的概念,对象是通过构造函数创建而来的)
  3. 使用 Object.create() 方法,其第一个参数指定对象的原型对象(可以理解为parent对象),第二个参数为可选参数

示例:

var a = {};                 // #1,字面值创建方式,创建一个空对象
var b = { x: 1, y: 2 };     // #2,字面值创建方式,创建一个非空对象
var c = new Object();       // #3,通过 new 运算符创建,创建一个空对象,同 #1
var d = new Date();         // #4,通过 new 运算符创建,创建一个日期对象
var e = Object.create(Object.prototype); // #5,创建一个空对象,同 #1 和 #3
var f = Object.create(b);   // #6,创建一个继承自 b 的对象
f.x = 3;          // 并不会影响父对象 b 中的属性值
console.log(b);   // { x: 1, y: 2 }
console.log(f);   // { x: 3 },这里虽然没有输出 y 属性,但是通过 f.y 能访问 y 属性值
console.log(f.y); // 2

 

in 与 hasOwnProperty() 的区别

in 可以检测对象的自有属性和继承属性,而 hasOwnProperty() 仅可用于检测对象的自有属性,例如:

var p = { x: 1, y: 2 };
var c = Object.create(p);
c.z = 3;
console.log("x" in c); // true
console.log("z" in c); // true
console.log(c.hasOwnProperty("x")); // false
console.log(c.hasOwnProperty("z")); // true

 

未完待续。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!