ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

JS原型

2022-02-01 23:32:41  阅读:130  来源: 互联网

标签:__ Foo console foo JS 原型 prototype log


原型

1.构造函数与普通函数的区别

通过不同的执行方式改变函数内部的this指向

function Foo(){
    this.a = 1;
}
Foo()  //this指向window
console.log(window.a);  //1
var foo = new Foo();  // this指向foo实例对象
console.log(foo.a);  // 1

2.prototype 与__ proto__

function Foo(){
    this.a = 1;
}
var foo = new Foo()

显示原型与隐式原型

构造函数->显示原型(prototype)

实例对象->隐式原型(__ proto __)

console.log(Foo.prototype === foo.__proto__); //true 所有Foo实例对象的共同祖先
console.log(Object.getPrototypeOf(foo)===foo.__proto__);  
//true 推荐使用Object.getPrototypeOf()方法获取实例对象的原型

Foo.prototype 是构造函数Object的实例对象

console.log(Foo.prototype.__proto__ === Object.prototype); //true
console.log(foo.__proto__.__proto__ === Object.prototype)  //true

3.constructor构造函数

用于声明实例对象由谁创造

 function Foo(){
     this.a = 1;
 }
var foo = new Foo()
console.log(foo.constructor);
//ƒ Foo(){
//      this.a = 1;
//}

当我们修改对象原型时一般手动重新添加构造方法

function Foo(){
    this.a = 1;
}
var foo = new Foo()
Foo.prototype = {
    aa:11,
    bb:22,
    // constructor:Foo
}
Foo.prototype.constructor = Foo
console.log(foo);

标签:__,Foo,console,foo,JS,原型,prototype,log
来源: https://www.cnblogs.com/qianduanxiaozhi1/p/15859921.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有