We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
函数在整个 JavaScript 中是最复杂也是最重要的知识,函数既可以调用也可以实例化的,既可以直接执行得到函数的返回值, 也可以通过 new 操作符调用得到一个对象。对于一个函数来说,主要存在三种可能的角色:
JavaScript
new
function Person() { var height = 170; this.age = 30 } // code: s1 var ali = Person(); // undefined // code: s2 var Jack = new Person(); Person.prototype.getAge = function() { console.log(this.age); } Jack.height; // undefined Jack.sex; // undefined // code: s3 console.log(Person.length); console.log(Person.name); console.log(Person.__proto__);
普通函数,上面 s1 部分 code, 把 Person 当做普通函数使用,执行的时候会形成私有的作用域,然后进行形参赋值、预解析、代码执行、执行完成后内存销毁;
s1
code
Person
构造函数, new 操作符 + 构造函数来构造对象, 相当于其他面向对象语言(Java, C#等)中的 class, 定义一个类来实例化对象。 上面代码s2部分code, 就是将Person作为构造函数去使用的, Jack是用Person构造函数构造的一个对象,Person构造函数有一个叫做prototype的属性是自己的原型,它的实例都可以指向自己的原型;
class
普通对象, Person 与 var obj = {} 中的obj一样,就是一个普通的对象(所有的函数都是Function的实例),它作为对象可以有一些自己的私有属性(如name, length),也可以通过__proto__找到Function.prototype.
The text was updated successfully, but these errors were encountered:
No branches or pull requests
函数在整个
JavaScript
中是最复杂也是最重要的知识,函数既可以调用也可以实例化的,既可以直接执行得到函数的返回值, 也可以通过new
操作符调用得到一个对象。对于一个函数来说,主要存在三种可能的角色:普通函数,上面
s1
部分code
, 把Person
当做普通函数使用,执行的时候会形成私有的作用域,然后进行形参赋值、预解析、代码执行、执行完成后内存销毁;构造函数,
new
操作符 + 构造函数来构造对象, 相当于其他面向对象语言(Java, C#等)中的class
, 定义一个类来实例化对象。 上面代码s2部分code, 就是将Person作为构造函数去使用的, Jack是用Person构造函数构造的一个对象,Person构造函数有一个叫做prototype的属性是自己的原型,它的实例都可以指向自己的原型;普通对象, Person 与 var obj = {} 中的obj一样,就是一个普通的对象(所有的函数都是Function的实例),它作为对象可以有一些自己的私有属性(如name, length),也可以通过__proto__找到Function.prototype.
The text was updated successfully, but these errors were encountered: