首页 > 网站 > WEB开发 > 正文

javascript——面向对象程序设计(1)

2024-04-27 14:13:41
字体:
来源:转载
供稿:网友

javascript——面向对象程序设计(1)

  1     <script type="text/Javascript">  2         //ECMA-262把对象定义为:“无序属性的 集合,其属性可以包含基本值、对象或者函数”  3         //理解对象,最简单的方式就是通过创建一个Object的实例,然后为它添加属性和方法  4         var person = new Object();  5         person.name = "Xulei";  6         person.age = "23";  7         person.job = "前端工程师";  8         person.sayName = function () {  9             alert(this.name); 10         } 11  12         //还可以这样写 13         var person = { 14             name: "xulei", 15             age: 23, 16             job: "前端工程", 17             sayName: function () { 18                 alert(this.name) 19             } 20         } 21  22  23         //一、属性类型:数据属性和访问其属性 24         //1、数据属性,有4个描述其行为的特性 25         //[Configurable]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,默认值为true 26         //[Enumerable]:表示能否通过for-in返回属性,默认值为true 27         //[Writable]:表示能否修改属性,默认值为true 28         //[Value]:包含这个属性的数据值。默认值为undefined 29         var person = { 30             name: "xulei" 31         } 32         //这里创建了一个person对象,value值就是“xulei” 33  34         //要修改属性的默认特性,必须使用ECMAScript5的Object.definePRoperty(属性所在的对象,属性的名字,描述符对象) 35         //描述符对象必须是configurable、enumerable、writable、value 36         var peron = {} 37         Object.defineProperty(peron, "name", { 38             writable: false,//属性不能被修改 39             value: "徐磊-xulei" 40         }); 41  42         alert(peron.name);//徐磊-xulei 43         peron.name = "徐磊"; 44         alert(peron.name);//徐磊-xulei 45         //以上操作在非严格模式下赋值操作会被忽略,如果在严格模式下会抛出异常 46         //一旦把属性定义为不可配置的就不能把它变回可配置的了。 47         //在多数情况下都没有必要利用Object.defineProperty()方法提供的这些高级功能。但是对理解javascript非常有用。 48         //建议读者不要在ie8上使用此方法。 49  50  51         //2、访问其属性,有4个特性 52         //[Configurable]:表示能否通过delete删除属性从而重新定义属性,能否修改属性的特性,或者能否把属性修改为访问器属性,默认值为true 53         //[Enumerable]:表示能否通过for-in返回属性,默认值为true 54         //[Get]:在读取时调用的函数 默认值undefined 55         //[Set]:在写入属性时调用的函数 默认值Undefined 56         var book={ 57             _year:2004, 58             edition:1 59         } 60  61         Object.defineProperty(book,"year",{ 62             get:function(){ 63                 return this._year; 64             }, 65             set:function(value){ 66                 if(value>2004){ 67                     this._year=value; 68                     this.edition +=value-2004; 69                 } 70             } 71         }); 72         book.year=2005; 73         alert(book.edition);//2 74  75  76  77  78  79         //创建对象 80         //1、将构造函数当做函数 81         function Person(name,age,job) { 82             this.name=name; 83             this.age=age; 84             this.job=job; 85             this.sayName=function(){ 86                 alert(this.name); 87             } 88         } 89  90         //当做构造函数使用 91         var person=new Person("xulei",23,"software"); 92         person.sayName(); 93  94         //作为普通函数使用 95         Person("xulei2",23,"job2");//添加到window中 96         window.sayName(); 97  98         //在另一个对象的作用域中调用 99         var o=new Object();100         Person.call(o,"xulei3",23,"job3");101         o.sayName();102     </script>


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表