js学习(四)- prototype原型对象】的更多相关文章

通过构造函数生成的实例化对象,无法共享属性或方法(即每个实例化对象上都有构造函数中的属性和方法):造成了一定的资源浪费 function Obj(name,age){ this.name=name; this.age=age; this.func=function(){ return 'this is a test function'; }; } var o1=new Obj('小明',10); var o2=new Obj('小白',12); console.log(o1.func===o2.…
一,instanceof: instanceof检测左侧的__proto__原型链上,是否存在右侧的prototype原型. 我在之前的两篇文章 [js高手之路]构造函数的基本特性与优缺点 [js高手之路]一步步图解javascript的原型(prototype)对象,原型链 已经分享过了. function CreateObj(uName) { this.userName = uName; this.showUserName = function () { return '100'; } }…
原型对象prototype可以这么理解,是该类的实例对象的模板,每个实例对象都是先复制一份该类的prototype,通过这个可以让类的实例拥有相同的功能   String.prototype.say=function(){     alert(this); }; "test".say(); 这样就给String类的实例对象添加了一个方法,当然也可以添加其他的属性.方法. 通过prototype可以让js模拟面向对象的功能 其他类型 Array.prototype.unset = fun…
我们创建的每一个函数都有一个prototype(原型)属性.这个属性是一个指针,指向一个对象,而这个对象的用途是包括能够由特定类型的全部实例共享的属性和方法.假设依照字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象.使用原受对象的优点是能够让全部对象实例共享它所包括的属性和方法.换句话说,不必在构造函数中定义对象实例的信息,而是能够将这些信息直接加入到原型对象中,如以下的样例所看到的. function Person(){} Person.prototyp…
本文是学习<JavaScript高级程序设计>第六章的笔记. JS中,便于批量创建对象的三种模式: 1.工厂模式:用一个函数封装创建对象的细节,传入必要的参数,在函数内部new一个对象并返回. 缺点:创建的对象无法识别类型(全是Object) 2.构造函数模式:必须配合new操作符使用.在构造函数内部将this当做新对象指针,赋予其属性和方法,然后经历以下四个步骤: 1)创建一个新对象 2)将构造函数的作用域赋给这个新对象(即将this指向这个对象) 3)执行构造函数内部代码(完成对象初始化)…
Vue原型对象的包装 在Vue官网直接通过 script 标签导入的 Vue包是 umd模块的形式.在使用前都通过 new Vue({}).记录一下 Vue构造函数的包装. 在 src/core/instance/index.js 这个文件是 Vue构造函数的出生地. import { initMixin } from './init' import { stateMixin } from './state' import { renderMixin } from './render' impo…
在典型的面向对象的语言中,如java,都存在类(class)的概念,类就是对象的模板,对象就是类的实例.但是在Javascript语言体系中,是不存在类(Class)的概念的,javascript中不是基于‘类的',而是通过构造函数(constructor)和原型链(prototype chains)实现的.但是在ES6中提供了更接近传统语言的写法,引入了Class(类)这个概念,作为对象的模板.通过class关键字,可以定义类.基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能…
构造函数与原型对象的同名属性,实例会取哪一个? 看了下面的过程,再回忆JS高程3里关于这部分的示意图.实例my在new的时候,本身就获得了a属性,所以my.a是1,倘若在new的时候如果没有赋予a属性,则会从原型上搜索a属性,my.a是2.为什么有这个问题?因为在研究ES6和React中this的时候,碰到了这个易出错的地方. function A() { this.a = 1; //注释掉这句就从原型上获取了 } A.prototype.a = 2; var my = new A(); con…
在JS中,每当创建一个函数对象f1 时,该对象中都会内置一些属性,其中包括prototype和proto, prototype即原型对象. 每一个构造函数都有一个与之相关联的对象,该对象称之为原型对象.每个实例对象都能共享其原型对象上的属性和方法.原型对象的作用主要用来实现属性的继承,让实例对象能共享原型对象的属性,减少内存分配.所以,在上一节中,我们想在每个Person对象中共享同一个say方法,可以这样来实现.function Person(name, age) {this.name = n…
前言: 下面两行代码都是创建一个数组对象myArray:var myArray=[];//等价于var myArray=new Array();同样,下面的两段代码也都是创建一个函数myFunction:function myFunction(a,b){      return a+b;}//等价于var myFunction=new Function("a","b","return a+b"); 所以创建一个函数的方法相当于new了一个Func…