zoukankan      html  css  js  c++  java
  • js面向对象关键点

    函数加new 工作流程:

    (1) 创建一个新对象; => var this = new Object();
    (2) 将构造函数的作用域赋给新对象(因此 this 就指向了这个新对象) ;
    (3) 执行构造函数中的代码(为这个新对象添加属性) ;
    (4) 返回新对象

    this: 谁调用的函数 this就指向谁

    创建的每个函数都有一个 prototype (原型)属性.

    当调用构造函数创建一个新实例后,
    该实例的内部将包含一个指针(内部属性),指向构造函数的原型对象。
    ECMA-262 第 5 版中管这个指针叫 [[Prototype]] 。
    虽然在脚本中没有标准的方式访问 [[Prototype]] ,
    但 Firefox、Safari 和 Chrome 在每个对象上都支持一个属性__proto__

    每当代码读取某个对象的某个属性时,都会执行一次搜索,目标是具有给定名字的属性。搜索首先
    从对象实例本身开始。如果在实例中找到了具有给定名字的属性,则返回该属性的值;如果没有找到,
    则继续搜索指针指向的原型对象,在原型对象中查找具有给定名字的属性。如果在原型对象中找到了这
    个属性,则返回该属性的值。也就是说,在我们调用 person1.sayName() 的时候,会先后执行两次搜
    索。首先,解析器会问: “实例 person1 有 sayName 属性吗?”答: “没有。 ”然后,它继续搜索,再
    问: “ person1 的原型有 sayName 属性吗?”答: “有。 ”于是,它就读取那个保存在原型对象中的函
    数。当我们调用 person2.sayName() 时,将会重现相同的搜索过程,得到相同的结果。而这正是多个
    对象实例共享原型所保存的属性和方法的基本原理。

    call :  

    call:函数的一个方法,
    call方法的第一个参数可以改变函数执行过程中的内部this的指向;
    call方法从第二个参数开始就是原来函数的参数列表;
    如果call方法传入的第一个参数是null,那么就是不改变函数内部的this指向的。

    function show(){
    alert(this);
    }
    
    show(); //这是函数调用的简写 弹出window
    show.call(); //调用函数 也就是说:show() 可视为等同于show.call() 弹出window
    show.call('caonima') //弹出caonima,因为在show里面的this变成了caonima。
    show.call(123) //弹出123,因为在show里面的this变成了123。
    

      

  • 相关阅读:
    Android开发 使用 adb logcat 显示 Android 日志
    【嵌入式开发】向开发板中烧写Linux系统-型号S3C6410
    C语言 结构体相关 函数 指针 数组
    C语言 命令行参数 函数指针 gdb调试
    C语言 指针数组 多维数组
    Ubuntu 基础操作 基础命令 热键 man手册使用 关机 重启等命令使用
    C语言 内存分配 地址 指针 数组 参数 实例解析
    CRT 环境变量注意事项
    hadoop 输出文件 key val 分隔符
    com.mysql.jdbc.exceptions.MySQLNonTransientConnectionException: Too many connections
  • 原文地址:https://www.cnblogs.com/caonima-666/p/6763109.html
Copyright © 2011-2022 走看看