zoukankan      html  css  js  c++  java
  • 关于prototype

    对于js的原型部分是学了忘,忘了学,不断的重复。所以将自己的理解结合几个简单的例子来说明原型的简单的用法,项目中用到的时候直接就可以拿来用。(面试的时候还是要去看别的大神洋洋洒洒的文字,我就不献丑了。)

    函数的 prototype 属性是在函数作为构造器使用的时候,作为其构造对象的原型。
    而只用通过new创建的函数,才有prototype属性。

    prototype可以添加属性和方法。

    简单来讲:

    function Person(name){
          this.name=name;
    };
    var person1=new Person('Byron');
    Person.prototype.printName=function(){
          alert(this.name);
    };
    console.log(person1);
    //因为person1是通过new来创建的,所以具有prototype属性,当Person又在后面添加一个函数的时候,person1同样可以访问。也可以说person1继承了Person的原型(prototype)

    但是如果我们不去new,而是直接赋值:

    function Person(name){
          this.name=name;
    };
    var person1=Person('Byron');
    Person.prototype.printName=function(){
          alert(this.name);
    };
    console.log(person1);
    //因为person1是直接赋值的,没有prototype属性,所以就无法继承Person的属性,打印结果就是undefined

    同样的,我们给其添加其他的属性也是同样的结果。

    每个函数都有一个prototype属性,这个属性是指向一个对象的引用,这个对象称为原型对象,原型对象包含函数实例共享的方法和属性,也就是说将函数用作构造函数调用(使用new操作符调用)的时候,新创建的对象会从原型对象上继承属性和方法。

    大概就是这么个意思。

    var Client = function(){};
    Client.prototype.subscribe = function(name) {
       this.name = name;
      return this.name; }
    var test = new Client('測試'); test.subscribe('測試');
  • 相关阅读:
    ASP.NET中的状态保持(转载)
    Win7系统下VS2008安装SP1补丁解决JQuery无智能提示的问题
    合并多个List<T>类型并通过LINQ按指定属性排序
    ASP.NET状态保持:ViewState
    第一部分 CLR基础:第1章 CLR的执行模型
    Oracle存储过程知识汇总
    ASP.NET中Button控件的CommandName和CommandArgument属性用法
    PL/SQL Developer使用
    ASP.NET常用代码汇总
    PL/SQL Developer中文注释乱码的解决办法
  • 原文地址:https://www.cnblogs.com/sixrookie/p/10212794.html
Copyright © 2011-2022 走看看