首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

游戏开发之旅-JavaScript对象总结

本节是第四讲的第十八小节,我们在前几节课为大家介绍了JavaScript对象,由于JavaScript对象概念比较重要,本节将为大家总结下对象的相关概念。

对象的基本概念

以下声明一个person对象:

var person = {

name : ['Bob', 'Smith'],

age:32,

gender: 'male',

greeting: function() {

alert('Hi! I\'m ' + this.name[0] + '.');

}

};

对象是一个包含相关数据和方法的集合(通常由一些变量和函数组成,我们称之为对象里面的属性和方法)。

点表示法(dot notation)来访问对象的属性和方法。对象的名字表现为一个命名空间(namespace),它必须写在第一位。例如:person.age

另外一种访问属性的方式是使用括号表示法(bracket notation),例如:person['age'],person['name'][0]。

使用构造函数创建对象

function Person(first, last,gender) {

this.name = {

'first': first, 'last': last

};

this.gender = gender;

this.greeting = function() {

};

}

let person1 = new Person('Bob', 'Smith', 'male');

如上所示,通过函数直接创建对象,里面的this指的是Person对象。使用Object()构造函数也可以创建对象,以下分别是Object创建对象的两种方法:

var person1 = new Object();

person1.name = 'Chris';

person1['gender'] = 'male';

person1.greeting = function() {

alert('Hi! I\'m ' + this.name + '.');

}

var person1 = new Object({

name : 'Chris',

gender: 'male',

greeting : function() {

alert('Hi! I\'m ' + this.name + '.');

}});

Object对象的create方法

var person2 = Object.create(person1);

JavaScript有个内嵌的方法create(), 它允许您基于现有对象创建新的对象。person2是基于person1创建的, 它们具有相同的属性和方法。这非常有用, 因为它允许您创建新的对象而无需定义构造函数。缺点是比起构造函数,浏览器在更晚的时候才支持create()方法(IE9,  IE8 或甚至以前相比), 加上一些人认为构造函数让您的代码看上去更整洁 —— 您可以在一个地方创建您的构造函数, 然后根据需要创建实例, 这让您能很清楚地知道它们来自哪里。

原型类的定义

事实上,一种极其常见的对象定义模式是,在构造器(函数体)中定义属性、在 prototype 属性上定义方法。如此,构造器只包含属性定义,而方法则分装在不同的代码块,代码更具可读性,如下所示:

// 构造器及其属性定义

function Test(a,b,c,d) {

// 属性定义

};

// 定义第一个方法

Test.prototype.x = function () { ... }

// 定义第二个方法

Test.prototype.y = function () { ... }

原型继承类的定义

function Teacher(first, last, age, gender, interests, subject) {

Person.call(this, first, last, age, gender, interests);

this.subject = subject;

}

Teacher.prototype = Object.create(Person.prototype);

//将覆盖Person对象的greeting方法

}

call()函数允许您调用一个在这个文件里别处定义的函数。第一个参数指明了在您运行这个函数时想对“this”指定的值,也就是说,您可以重新指定您调用的函数里所有“this”指向的对象。其他的变量指明了所有目标函数运行时接受的参数。

用Object.create()来创建一个和Person.prototype一样的新的原型属性值(这个属性指向一个包括属性和方法的对象),然后将其作为Teacher.prototype的属性值。这意味着Teacher.prototype现在会继承Person.prototype的所有属性和方法。

还需要完成一件事 — 现在Teacher()的prototype的constructor属性指向的是Person(), 这是由我们生成Teacher()的方式决定的,因此constructor属性指向Teacher即可。

JSON对象

{

“name” : ['Bob', 'Smith'],

“age”:32,

“gender”: 'male',

}

JSON 是一种纯数据格式,它只包含属性,没有方法。

JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 JSON 对象。

不像 JavaScript 标识符可以用作属性,在 JSON 中,只有字符串才能用作属性。

对象和文本间的转换

浏览器拥有一个内建的 JSON,包含以下两个方法,parse(): 以文本字符串形式接受JSON对象作为参数,并返回相应的对象;stringify(): 接收一个对象作为参数,返回一个对应的JSON字符串,如下所示:

var toString='{ "name" : "Chris", "age" : "38" }';

var toJSON=JSON.parse(toString);

var myJSON = { "name" : "Chris", "age" : "38" };

var myString = JSON.stringify(myJSON);

以上内容部分摘自视频课程04网页游戏编程JavaScript-18对象总结,更多示例请参见网站示例。跟着张员外讲编程,学习更轻松,不花钱还能学习真本领。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200818A0LHQ300?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券