当前位置:  开发笔记 > 编程语言 > 正文

详细了解JavaScript:它是一个类,一个函数,还是一个变量?

如何解决《详细了解JavaScript:它是一个类,一个函数,还是一个变量?》经验,为你挑选了3个好方法。

我是JavaScript的初学者,我发现一个非常令人困惑的概念.请考虑以下代码:

var person = {
     firstName   :"Penelope",
     lastName    :"Barrymore",
     // Since the "this" keyword is used inside the showFullName method below, and the showFullName method is defined on the person object,?
     // "this" will have the value of the person object because the person object will invoke showFullName ()?
     showFullName:function () {
         console.log (this.firstName + " " + this.lastName);
     }
?
 }
?
 person.showFullName (); // Penelope Barrymore

人是一个阶级或功能还是只是一个变量?

如果假设那个人是一个类,那么代码person.showFullName ();是调用它的正确方法,因为在C#或我们编写的任何其他语言中

person perObj = new person();
perObj.showFullName();



1> Barmar..:

person是一个对象.它有3个属性,命名firstName,lastNameshowFullName.前两个属性包含字符串.最后一个属性包含一个函数.

当您使用语法调用函数时.(),其中求值对象并且是其属性之一的名称,然后在函数运行时将特殊变量this设置为对象.这就是如何this.firstName以及this.lastName能够访问对象的这些属性.

当只有一个对象时,此功能不是很有用,因为它可以轻松地使用该person变量.但是你可以对多个对象使用相同的功能.

function showFull() {
    console.log(this.firstName + " " + this.lastName);
}
var person1 = {
    firstName: "Penelope",
    lastName: "Barrymore",
    showFullName: showFull
};
var person2 = {
    firstName: "John",
    lastName: "Smith",
    showFullName: showFull
}
person1.showFullName(); // Penelope Barrymore
person2.showFullName(); // John Smith


@ user5283721:巴尔玛说"人"是一个对象.他简化了一点,以免一下子向你扔太多东西.现在你已经阅读了他的答案,我们可以说'person`是一个变量,*指*对象.

2> loxxy..:

只是为了添加到Barmar,你也可以做到这样的事情(如果你发现它更类似于C#):

var person = function() {
     this.firstName = "";
     this.lastName = "";
} 

person.prototype.showFullName = function () { 
     console.log (this.firstName + " " + this.lastName); 
} 

var perObj = new person();
perObj.firstName = "Penelope";
perObj.lastName = "Barrymore";
perObj.showFullName();



3> Oxi..:

这是一个对象,而不是一个类.

以这种方式考虑:

在其他经典的OO语言中,当您实例化一个类时,您会得到一个实例 ; 这个实例有点像JavaScript 对象 -

JavaScript对象是属性的动态"包".它是一组名称 - 值对,这些值可以是任何类型 - 函数或对象本身.

在你的情况下,firstName, lastName, and showFullName是人物的适当对象.

您可以使用点(.)表示法访问对象的属性,例如: person.firstName, person.showFullName()

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有