云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > js对象

js对象

  • 62 次阅读
  • 3 次下载
  • 2026/4/24 4:33:05

js之自定义对象

一、定义对象

1.对象初始化器方式

格式:objectName = {property1:value1, property2:value2,…, propertyN:valueN} property是对象的属性,value则是对象的值,值可以是字符串、数字或对象三者之一 例如:

var user={name:“user1”,age:18};var

user={name:“user1”,job:{salary:3000,title:programmer} 以这种方式也可以初始化对象的方法,例如:

var user={name:“user1”,age:18,getName:function(){return this.name;} }

2.工厂函数(factory function)方式 例如:

//每个对象都共享了同一个函数。function showColor(){ alert(this.color);}function

createCar(sColor,iDoors){ var oTemp = new Object;//对象的属性可在对象创建后动态定义 oTemp.color = sColor; oTemp.doors = iDoors; oTemp.showColor = showColor; return oTemp;}var oCar1 = createCar(\

3.构造函数方式

创建构造函数就像定义工厂函数一样容易。第一步选择类名,即构造函数的名字。根据惯例,这个名字的首字母大写,以使它与首字母通常是小写的变量名区分开。 例如:

function Car(sColor,iDoors){ this.color = sColor; this.doors = iDoors; this.showColor = function(){alert(this.color);};}var oCar1 = new Car(\Car(\

在构造函数内部无创建对象,而是使用this关键字。使用new运算符调用构造函数时,在执行第一行代码前先创建一个对象,只有用this才能访问该对象。然后可以直接赋予this属性,默认情况下是构造函数的返回值(不必明确使用return运算符)。 4.原型(prototype)方式

该方式利用了对象的prototype属性,可把它看成创建新对象所依赖的原型。这里,用空构造函数来设置类名。然后所有的属性和方法都被直接赋予prototype属性。

function Car(){}//使用原型方式时,不能通过给构造函数传递参数初始化属性的值,这意味必须在对象创建后才能改变属性的默认值Car.prototype.color =\= 4;Car.prototype.drivers = new Array(\对象却很少被多个实例共享的,属性drivers是指向Array对象的指针Car.prototype.showColor = function(){//函数共享不会造成任何问题 alert(this.color);}var oCar1 = new Car();var oCar2 = new Car();oCar1.drivers.push(\\

是否有种合理的创建对象的方法呢?答案是联合使用构造函数和原型方式。 5.混合的构造函数/原型方式

用构造函数定义对象的所有非函数属性,用原型方式定义对象的函数属性(方法)。结果所有函数都只创建一次,而每个对象都具有自己的对象属性实例。

function Car(sColor,iDoors){ this.color = sColor; this.doors = iDoors; this.drivers = new Array(\new Car(\

Car(\\

现在就更像创建一般对象了。所有的非函数属性都在构造函数中创建,意味着又可用构造函数的参数赋予属性默认值了。因为只创建showColor()函数的一个实例,所以没有内存浪费。这种方式是ECMAScript主要采用的方式,它具有其他方式的特性,却没有它们的副作用。 6.动态原型方法

动态原型方法的基本想法与混合的构造函数/原型方式相同,即在构造函数内定义非函数属性,而函数属性则利用原型属性定义。唯一的区别是赋予对象方法的位置。

function Car(sColor,iDoors){ this.color = sColor; this.doors = iDoors; this.drivers = new Array(\= function(){ alert(this.color); } Car._initialized = true; }}

直到检查typeof Car._initialized是否等于\之前,这个构造函数都未发生变化。这行代码是动态原型方法中最重要的部分。如果这个值未定义,构造函数将用原型方式继续定义对象的方法,然后把Car._initialized设置为true。如果这个值定义了(它的值为true时,typeof的值为Boolean),那么就不再创建该方法。简而言之,该方法使用标志(_initialized)来判断是否已给原型赋予了任何方法。该方法只创建并赋值一次。

例子:定义一个StringBuffer类

function StringBuffer(){ this._strings_=new Array;}//把该参数附加到字符串数组中

StringBuffer.prototype.append = function (str){ this._strings_.push(str);}//返回真正连接成的字符串StringBuffer.prototype.toString = function(){ return this._strings_.join(\清空StringBuffer.prototype.removeAll =

function(){ this._strings_.splice(0,this._strings_.length);//this._strings_.length=0}

搜索更多关于: js对象 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

js之自定义对象 一、定义对象 1.对象初始化器方式 格式:objectName = {property1:value1, property2:value2,…, propertyN:valueN} property是对象的属性,value则是对象的值,值可以是字符串、数字或对象三者之一 例如: var user={name:“user1”,age:18};var user={name:“user1”,job:{salary:3000,title:programmer} 以这种方式也可以初始化对象的方法,例如: var user={name:“user1”,age:18,getName:function(){return this.name;} } 2.工厂函数(factory

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com