判断JS构造函数的实例中的属性函数是否占用同一片内存

问题描述

JS构造函数内部用function声明的函数,与利用this声明的函数有何不同,为何function声明的函数,实例化后仍指向同一片内存,而this声明的函数反之

问题出现的环境背景及自己尝试过哪些方法

console.log()输出问题

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

function Person(age,name) {            this.age = age;            this.name = name;            function showSex() {                console.log("girl");
            }            this.say = function() {}
        }  
        var p1 = new Person();        var p2 = new Person();        console.log("showSex函数",p1.showSex === p2.showSex);  
        console.log("say函数",p1.say === p2.say);  
        Person.prototype.run = function () {            console.log("1米每秒");
        }        console.log("run函数",p1.run === p2.run);        console.log("run函数",p1.run === Person.prototype.run);        // 双等号和三等号在比较对象的时候是没有任何区别的。

实际看到的错误信息是什么?

这一段输出结果为true,console.log("showSex函数",p1.showSex === p2.showSex); //true


精慕HU
浏览 1212回答 3
3回答

汪汪一只猫

Person中默认声明的函数: function showSex() {    console.log("girl"); },该函数只在内部有效,只能内部调用,获取的p1.showSex 为 undefined而使用this.say = function() {},该函数是挂载在当前创建的对象上的,属于对象所有,不同的对象,其say方法也就不同。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript