首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JS面向对象二:this原型new原理

JS面向对象二:this/原型链/new原理 阮一峰JavaScript教程:面向对象编程 阮一峰JavaScript教程:实例对象与 new 命令 阮一峰JavaScript教程:this 关键字 也可以看看这篇文章周大侠啊...但是由于回调函数的调用者往往不是我们自己,而是回调函数的接收者,即某个库或框架、甚至是JS运行时环境。...文中: **No. 1:Object.prototype No. 2:Function.prototype** 还有这几篇文章也不错: 「每日一题」什么是 JS 原型链?...- 方应杭的文章 - 知 周大侠啊 进击的 JavaScript 之 (七) 原型链 周大侠啊 进击的 JavaScript (八) 之 继承 new() 看看这篇文章很清楚: JSnew 到底是干什么的...new的使用,new的过程就是生产机器按照模板原型对象造出来的新对象的过程!

2K30

JavaScript难点:原型原型链、继承、new、prototype和constructor

new 构造函数只能通过 new 关键字才能调用创建实例,class 类必须要加 new 否则会报错。...当我们 new 的时候实际会调用内部的 constructor 构造函数,会做以下4步: 新建一个对象 将对象的原型指向构造函数的 prototype 绑定 this,执行构造函数中的代码 返回对象...console.log('Hello, 我是' + username) } } function Boy(gender) { this.gender = gender } Boy.prototype = new...Person('小明') // 重置 constructor // Boy.prototype.constructor = Boy const ming = new Boy() ming.say()...// 直接通过调实例原型上的构造函数去新建实例 const hua = new ming.constructor() console.log(hua) // 打印 2 个实例上的构造函数名都是父类的 Person

8910
您找到你想要的搜索结果了吗?
是的
没有找到

JS原型原型

值得注意的是typeof (null)会返回Object,这是因为JS二进制前三位都为0的话会被判断为Object类型,null的二进制表示是全0,自然前三位也是0,所以执行typeof时会返回Object...构造函数对象 构造一个Student类,实例化Student出stu实例对象 function Student() {} var stu = new Student(); stu.name = "Ming...new Student(); console.log(stu1.from) // sdust console.log(stu2.from) // sdust __proto__ __proto__ 是原型链查询中实际用到的...原型链可以简单理解为将原型连成一条链,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型链查找,...直到查找到原型链的顶端,也就是Object的原型

1.7K50

js原型原型

) // Kevin Person 就是一个构造函数,使用 new 创建了一个实例对象 person 原型(prototype) 每个函数都有一个 prototype 属性 每一个JavaScript对象...function Person() { } Person.prototype.name = 'Kevin'; var person1 = new Person(); var person2 = new...对象(除了 null )都有一个隐式的__proto__,它指向它的原型 function Person() { } var person = new Person(); console.log(person...Object可以使用__proto__来访问对象的原型对象,即Object可通过__proto__访问Function的Function.prototype 原型继承的整个关系( 原型链 ) 可以知道所有的对象都有原型...__proto__ === Object.prototype); // true 应用 继承 看我这篇文章:js实现继承 增删查改 function Person() { } // 增 Person.prototype.name

2K10

JS 手写: new

# 介绍 MDN-new 运算符 (opens new window) # Try it new 运算符创建一个用户定义的对象类型的实例或具有构造函数的内置对象的实例。...# 描述 new 关键字会进行如下的操作: 创建一个空的简单 JavaScript 对象(即{}); 为步骤 1 新创建的对象添加属性__proto__,将该属性链接至构造函数的原型对象 ; 将步骤 1...Mustang", 1976, p1); console.log(car1.owner.name); // "Rand McNally" # 实现 思路 创建一个空的实例对象,等待被初始化 将空实例对象的原型...,指向构造函数的原型 将构造函数内部的this,强制指向该实例对象,并执行构造函数,初始化实例对象 最后返回该实例对象 /** * new * @param {Function} constructor...== null) { // 将空实例对象的原型,指向构造函数的原型 obj.

1.3K10

JS面试必问-JS原型原型

为什么需要原型js中万物皆对象,对象可以说是重中之重了。每一个对象都拥有自己的属性。但是在这个世界中有很多东西都是相似的,可以归为一类,他们有共同的方法和属性。不可能让每一个对象都定义一个属性吧。...所以,在js中怎么才能让多个对象共享一个或多个方法呢?原型的出现就是为了解决这个问题。...我们上面讲过,js每一次获取对象中的属性都是一次查询过程,如果在自有属性中找不到就会去原型对象中查找,如果原型对象中还查不到,就回去原型对象的原型中查找,也就是按照原型链查找,直到查找到原型链的顶端,也就是...在js中,对象都有__proto__属性,一般这个是被称为隐式的原型,该隐式原型指向构造该对象的构造函数的原型。...var p1 = new Person('zxx', 18) console.log(p1.sex) // 女 console.log(Person.prototype) console.log(

1.4K20

js原型入门

前言 本文主要是根据《head first javascript程序设计》摘抄学习而成,学习采用这本书主要是一位阿里大佬的建议,经过近期的学习阅读,发现确实比其他的js书籍能更好的理解和使用js的相关知识...= name this.owner = owner this.walk = function(){ console.log("walking") } } var fido = new...之所以出现这样的问题,是因为我们没有充分利用好js的对象模型,其是基于原型的概念的。 原型是什么 js可以从其他对象那里继承属性和行为,更具体的说js使用原型继承。其中其行为继承的对象称为原型对象。...let little = new Dog("little",'xiaoli') little.bark = function(){ console.log('self bark') } little.bark...this) console.log(this.name+' is barking') console.log(this.name+' is '+this.type) } let little = new

1.4K11

js原型

) //true 5.构造函数与它的原型对象有一个相互引用的关系 6.原型对象上添加的方法用于实例对象上使用 隐式原型 每一个实例对象都有一个__proto__属性,称之为隐式原型 对象的隐式原型的值为其对应构造函数的显示原型的值...function Fn(){} var fn = new Fn() console.log(Fn.prototype === fn....__proto__) // true function Fn(){} console.log(Fn.prototype) var fn = new Fn() console.log(fn....console.log('调用了test1()') } } Fn.prototype.test2 = function (){ console.log('调用了test2()') } var fn = new...toString() 当执行fn.test3()时,查找自身对象没有,它直接的构造函数对象的原型对象上也没有,接下来沿着Fn原型对象的构造函数的原型对象的构造函数的原型对象上查找,这里已经找到原型链的尽头

2.1K20

JS 原型模式

简介 原型模式(Prototype pattern),用原型实例指向创建对象的类,使用于创建新的对象的类的共享原型的属性与方法。 2....实现 对于原型模式,我们可以利用JavaScript特有的原型继承特性去创建对象的方式,也就是创建的一个对象作为另外一个对象的prototype属性值。...; function vehicle(model) { function F() { }; F.prototype = vehiclePrototype; var f = new...---- 本文是系列文章,可以相互参考印证,共同进步~ JS 抽象工厂模式 JS 工厂模式 JS 建造者模式 JS 原型模式 JS 单例模式 JS 回调模式 JS 外观模式 JS 适配器模式 JS 利用高阶函数实现函数缓存...(备忘模式) JS 状态模式 JS 桥接模式 JS 观察者模式 网上的帖子大多深浅不一,甚至有些前后矛盾,在下的文章都是学习过程中的总结,如果发现错误,欢迎留言指出~ 参考: 设计模式之原型模式 《Javascript

1.4K10
领券