JS中关于OOP的一些基本问题

费兹

目前我正在学习对象,但我不确定某些单词和描述的术语。我相信你们中的一些人可以在这里帮助我:)

代码示例:

function Person(name) {
    this.name = name,
    this.introduce = function() {
        console.log("My name is " + this.name);
    }
}

var jon = new Person("Jon")
jon.introduce();

我的问题:

  1. 上面的代码和下面的代码之间实际上有区别吗:

    var Person = function(name) {
        this.name = name,
        this.introduce = function() {
            console.log("My name is " + this.name);
        }
    }
    
    var jon = new Person("Jon")
    jon.introduce();
    

哪个是更好的练习?我猜是第一个代码片段,因为它的代码较少。

  1. 现在是术语。

2.1 根据开头的代码示例,您是否将以下代码段称为原型?

    function Person(name) {
        this.name = name,
        this.introduce = function() {
            console.log("My name is " + this.name);
        }
    }

2.2 根据开头的代码示例,您将以下代码段称为构造函数(-function) 是否正确?

    var jon = new Person("Jon")

谢谢,东方快乐!:)

基兰·达什

第一点:大词

function Person(name) {
    this.name = name,
    this.introduce = function() {
        console.log("My name is " + this.name);
    }
}

var jon = new Person("Jon")
jon.introduce();

这个函数有一个名字“人”。这称为函数语句

var Person = function(name) {
    this.name = name,
    this.introduce = function() {
        console.log("My name is " + this.name);
    }
}

var jon = new Person("Jon")
jon.introduce();

这个函数是匿名的,没有名字。我们可以分配一个名称,但这不是必需的,因为该变量可用于执行函数。这称为函数表达式

您可以在此处阅读有关 Function 语句和表达式的更多信息:

https://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/

要点二:执行(吊装)

由于提升的工作方式,分配给变量的函数必须在定义函数后调用。

因此,对于第一种情况,函数可以在其定义的下方或上方调用

但是对于第二种情况必须在它之后调用函数因为它存储在一个变量中。在函数返回 undefined 之前调用它。它不会出错。该变量存在于内存空间中,但当时尚未定义。

您可以在此处阅读有关变量和函数提升的更多信息:

http://adripofjavascript.com/blog/drips/variable-and-function-hoisting

第 3 点:函数构造函数:

在您的情况下,用于函数的术语是“函数构造函数”,因为您本质上是使用函数作为 Person 对象的构造函数来定义它的属性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章