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,作用域,属性,原型链的一个小练习

  • 相关阅读:
    express4.x socket
    validator
    服务管理,Dll查看
    复制程序,获取系统信息
    TCP HelloWord
    UDP HelloWord
    [置顶] 一个小马
    注册表编辑
    服务的启动与停止
    自下载运行
  • 原文地址:https://www.cnblogs.com/mazey/p/8629213.html
Copyright © 2011-2022 走看看