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('測試');
  • 相关阅读:
    eclipse 配置SVN代理服务器
    jenkins 配置SVN 代理服务器
    记录服务器启动redis过程
    java牛客刷题2020年9月4日
    java牛客网错题2020年9月3日
    bootstrap-select 实现搜索,如果内容搜索不到显示到框内
    pandas教程5-合并 concat
    pandas教程-4导入导出
    pandas简单教程1
    AttributeError: module 'pandas' has no attribute 'Series'
  • 原文地址:https://www.cnblogs.com/sixrookie/p/10212794.html
Copyright © 2011-2022 走看看