zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/goesby/p/4237560.html
Copyright © 2011-2022 走看看