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>
  • 相关阅读:
    smarty
    js进阶
    JS 基础
    php之面向对象(2)
    php之面向对象(1)
    PHP之图形处理
    PHP代码分离
    PHP文件上传与安全
    PHP substr截取中文字符出现乱码的问题解疑
    关于学习方法
  • 原文地址:https://www.cnblogs.com/goesby/p/4237560.html
Copyright © 2011-2022 走看看