zoukankan      html  css  js  c++  java
  • 普通函数和构造函数

    arr=[1,3,5]
    arr.toString-->"1,3,5"
    var a={name:"abc"};
    a.toString-->[object,object];

    构造函数和普通函数
    构造函数:
    function Student(){}
    引用var p=new Student();

    执行步骤
    1.先创建一个对象o
    2.给对象赋值(this),执行各种操作 this.a=""
    3.返回这个对象o

    区别
    1.函数内部会创建一个对象
    2.函数内部this指向新创建的对象
    3.默认返回值就是创建的对象

    普通函数:
    function person(){};
    引用person();也可以用new person();

    执行步骤
    进入函数依次执行步骤

    区别
    1.函数内部不会创建对象
    2.函数内部this指向调用函数的对象,谁调用指向谁,没有对象调用时,指向window
    3.返回值由ruturn语句决定


    任何函数都有prototype属性,指向它的原型

    在浏览器中,几乎所有对象都有__proto__属性,原型链顶端没有
    __proto__是非标准属性,不可以出现在开发中

    函数的继承:
    a、扩展原型对象

    function Person(){

    }
    Person.prototype.say=function(){};
    var p1=new Person();
    p1.say();

    p1继承了p1.__proto__对象

    p1.__proto__继承了p1.__proto__.__proto__对象

    ...


    b、替换原型对象

    在原型对象加方法,通常加constructor,这样就替换了默认的prototype


    c、混入继承

    function extend(target,source){//mixin
    for (var key in source) {
    var value=source[key];
    //设置目标对象的同名属性的值
    target[key]=value;
    }
    return target;
    }


    d、原型+混入继承

    function Student(){

    }
    extend(Student.prototype,{
    a:function(){},
    b:function(){},
    c:function(){}
    });
    var s1=new Student();
    console.log(s1.a());


    e、经典继承——>Object.create()

  • 相关阅读:
    http://www.cplusplus.com/reference/string/string/find_last_of/

    SQL Server数据库设计表和字段的经验
    AMP产品识别
    水晶头AMP识别
    双绞线的规范和制作经验谈
    VB.net 产生随机验证码
    手把手教您架设Windows2003共享服务器
    使用EasyRecovery Pro 6.04恢复RAW格式硬盘的数据实战
    .NET中各种数据库连接大全
  • 原文地址:https://www.cnblogs.com/sw1990/p/5898454.html
Copyright © 2011-2022 走看看