zoukankan      html  css  js  c++  java
  • JS中的prototype与面向对象

     详情看代码的注释

      1 <script language="javascript" type="text/javascript">
      2         //(1)把一个方法变成一个对象,为对象创建方法和属性
      3         var Name = function () {
      4             //通过prototype给一个对象创建方法
      5             Name.prototype.Add = function (num, title) {
      6             }
      7             //也可以直接用this加方法名为对象创建方法和上面的等价
      8             this.Way = function (str) {
      9             }
     10             //为对象添加属性值
     11             Name.prototype.xing = "123";
     12 
     13             //定义静态属性和方法
     14             Name.shi = "static";
     15             Name.Addd = function (num, title) {
     16             }
     17             //静态定义的局部属性和方法只能在静态的类型里面用
     18             alert(Name.shi);
     19             Name.Addd(1, 2);
     20 
     21         }
     22         //方法也可以这样声明
     23         function Name1() {
     24             Name1.prototype.add = function () { }
     25             this.way = function () { }
     26             Name1.prototype.shu = "other";
     27         }
     28         //静态定义的全局属性和方法通用
     29         Name.sha = "static";
     30         Name.Addd2 = function () {
     31         }
     32         alert(Name.sha); //调用静态属性
     33         Name.Addd2(); //调用静态方法
     34         var name = new Name();
     35         name.Add(); //对象调用方法
     36         name.Way();
     37         alert(name.xing); //对象调用属性
     38         /*静态的全局变量,在方法外可以调用;静态的局部变量和方法仅限于方法内使用;实例对象不能调用静态的方法 */
     39         /*实例对象不能使用prototype; */
     40 
     41 
     42         //(2)Javascript面向对象 继承
     43         //父类
     44         function Class() {
     45             this.name = "name";
     46             this.method = function () {
     47                 alert("method");
     48             }
     49         }
     50         //子类
     51         function Class1() {
     52             this.name1 = "name1";
     53             this.method1 = function () {
     54                 alert("method1");
     55             }
     56         }
     57         //子类继承父类
     58         Class1.prototype = new Class();
     59         var obj = new Class1();
     60         alert(obj.name);
     61         alert(obj.name1);
     62         obj.method();
     63         obj.method1();
     64         /******  子类继承父类的语法,子类.prototype=new 父类();  *****/
     65         //(3)子类重写父类
     66         //子类
     67         function Class2() {
     68             this.name2 = "name2";
     69             this.method2 = function () {
     70                 alert("method2");
     71             }
     72         }
     73         Class2.prototype = new Class(); //继承
     74         Class2.prototype.name = "updateName"; //重写父类的属性
     75         Class2.prototype.method = function () {//重写父类的方法
     76             alert("UpdateMethod");
     77         }
     78         var obj2 = new Class2();
     79         alert(obj2.name); //显示updateName
     80         obj2.method(); //显示UpdateMethod
     81         alert(obj2.name2);
     82         obj2.method2();
     83 
     84         //(4){}里面的为对象
     85         var arr = new Array();
     86         arr.push({ "name": "1", "age": 12, funA: function () { } });
     87         arr.push({ "name": "2", "age": 13 });
     88         arr.push({ "name": "3", "age": 14 });
     89         for (var i = 0; i < arr.length; i++) {
     90             alert(arr[i].name);
     91             alert(arr[i].age);
     92             alert(arr[i].funA());
     93         }
     94         /****一个对象也可以这么定义***/
     95         var newObject = {
     96             "name": "Jim",
     97             "sex": "Man",
     98              Way: function () { } 
     99         };
    100     </script>
  • 相关阅读:
    【计算机图形学】变换 (Transform)
    [图像处理]基于 PyTorch 的高斯核卷积
    [PyTorch] torch.squeee 和 torch.unsqueeze()
    【图像分析】边缘检测中的图像梯度以及各种梯度算子的介绍
    你买的课程看了吗?
    为什么用抓包工具看HTTPS包是明文的
    定制化Fiddler
    软件测试常见网络相关面试题
    单线程和多线程执行对比—Python多线程编程
    多线程实践—Python多线程编程
  • 原文地址:https://www.cnblogs.com/heluo/p/3091743.html
Copyright © 2011-2022 走看看