JavaScript面向对象(1)——理解对象

2025-04-20 04:59:41

1、面向对象的语言有一个标志,那就是cla衡痕贤伎ss。而通过class可以创建任意多个具有相同属性和方法的对象。JavaScript与传统的面向对照滠跋诵象语言(C++、Java、C#、PHP等)是不同的,它并没有类的概念,因此它的对象也与基于class的语言中的对象有所不同。javascript对象是无序属性的集合,其属性可以包含基本值、对象或函数。我们可以把javascript的对象想象成散列表——对象的每个属性或方法都有一个名字,而且每个名字都映射到一个值,其中值可以是数据或函数。javascript中每个对象都是基于引用类型创建的,这些类型可以说原生类型也可以是自定义类型。写到这里我忽然想到了Go语言,go语言就是一个C+JavaScript+Python的结合体。随着自己对Go语言的深入学习,就愈能从中发现C、JavaScript和python的身影。创建对象最简单的方法是创建一个Object的实例,然后再为它添加属性和方法。

2、varuser=newObject();user.uname="jack";user.uage=17;user.SayHello=function(){alert("Hello,mynameis:"+this.uname);};user.SayHello();

3、上面是早期的javascript开发人员使用的创建对象的方式,现在创建这种对象的首选模式是用对象字面量。代码如下:varuser={uname:"jack",uage:17,SayHello:function(){alert("Hello,mynameis:"+this.uname);}};user.SayHello();

4、JavaScript中属性可分为数据属性和访问属性两种。数据属性有4个描述其行为的特性:configurable:表示能否通过delete删除属性而从新定义属性,能否修改属性的特性,或能否把属性修改为访问器属性。它的值为true或false。enumerable:表示能否通过for-in循环返回属性。它的值为true或false。writable:表示能否修改属性的值。它的值为true或false。value:包含这个属性的值。默认值为undefined。

5、varuser={"uname":"jack","uage":17};Object.defineProperty(user,"uname",{writable:false,value:"jack"});user.uname="mxi4oyu";user.uage=71;alert(user.uname+":"+user.uage);

6、我们可以通过Object.defineProperty()方法来限制数据属性是否为只读,是否可迭代,是否可配置等。但通常我们很少用到这些高级功能。我们创建的对象,默认都是可配置,可迭代,可读写的。访问属性也有4个特性,分别为:configurable:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为数据属性。enumerable:表示能够通过for-in循环返回属性。get:在读取属性时调用的函数。默认值为undefined。set:在写入属性时调用的函数。默认值为undefined。访问属性不能直接定义,必须使用Object>defineProperty()来定义。如下面这个例子:

7、varstudent={_name:"挢旗扦渌;jack",age:13};Object.defineProp髫潋啜缅erty(student,"name",{get:function(){return"mynameis:"+this._name;},set:function(newValue){this._name=newValue;}});student.name="tom";alert(student.name);而定义多个属性,我们可以使用Object.defineProperties()方法,要读取属性的特性,我们可以使用Object.getOwnPropertyDescriptor()方法。这里就不再深入展开,留着给大家研究下。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢