zoukankan      html  css  js  c++  java
  • 关于this,作用域,属性,原型链的一个小练习

    function p () {
        this.name = 'x';
        var name = 'y';
        this.getName = function () {
            return name;
        }
    }
    // 求值
    console.log(new p().getName());
    

    getName方法里面返回name值,此时name值从作用域里面找,即var name = 'y';,返回y;
    将getName方法里面的return name;改成return this.name;,这时会从this里面找属性为name的值,即'this.name = 'x';',返回x(之前一直觉得this取决于定义环境,而不取决于执行环境,后来得到一种说法是this取决于调用环境,包括方法调用、函数调用、构造器调用和apply/call调用,其实这边的调用和定义是一个意思,比如上面的this便是构造器调用)。

    function p () {
    //    this.name = 'x';
    //    var name = 'y';
        this.getName = function () {
            return this.name;
        }
    }
    p.prototype.name = 'z';
    // 求值
    console.log(new p().getName());
    

    若找不到属性便会在原型链上找name,即p.prototype.name = 'z';,返回z。

    关于this,作用域,属性,原型链的一个小练习

  • 相关阅读:
    9。11
    9.9样式
    9.9 容我懵逼一会
    16.9.8
    16.9.6下午
    16.9.6上午
    16.9.5下午
    流程例子
    使用极酷阳光播放器做流媒体播放并不暴露视频地址
    php 文件限速下载代码
  • 原文地址:https://www.cnblogs.com/mazey/p/8629213.html
Copyright © 2011-2022 走看看