美文网首页
javascript的原型

javascript的原型

作者: hello_water | 来源:发表于2017-03-22 21:40 被阅读8次

javascript基本对象是:Number, String, Boolean, null, undefined 在ES6中新增了Symbol。这些基本类型存储在栈中。而Function,Object, Array等数据类型存储在堆中。引用类型存储在栈中,保存的是实际内存的地址,指向堆中的数据。

内置对象有哪些:
  • 数据封装类的有:Object, Array, Number, String, Boolean。

  • 其它对象:Function, Arguments, Math, Date, RegExp。

<b> Object是所有对象的父对象。</b>
<b> javascript有内置对象和原生对象,内置对象是原生对象的一个子集。</b>

内置对象是在引擎初始化阶段被创建好的对象。原生对象还包括了一些在运行中动态创建的对象。
原生对象是New后的对象,内置对象不需要New。每个内置对象都是原生对象,一个内置的构造函数是一个内置的对象,也是一个构造函数。
每个对象都会在其内部初始化一个属性,就是prototype。

修改内置对象的原型:

prototype对象是实现面向对象的一个重要机制。通过prototype可以修改对象的原型。
Array.prototype.forEach = function(fn){ for ( var i = 0; i < this.length; i++ ) { fn( this[i], i, this ); } };
为Array增加一个原型方法forEach,它的功能即为“=”右侧的逻辑实现。

var test =["a", "b", "c"]; test.forEach(function(value, index, array){ assert( value, "Is in position " + index + " out of " + (array.length - 1) ); });
代码输出:PASS Is in position 0 out of 2
PASS Is in position 1 out of 2
PASS Is in position 2 out of

扩展原型有风险:
Object.prototype.keys = function(){ var keys = []; for ( var i in this ) keys.push( i ); return keys; }; var obj = { a: 1, b: 2, c: 3 }; obj.keys()obj.keys(); //["a", "b", "c", "keys"]
for循环会遍历对象所有的属性,包括原型属性、自定义属性。

为了判断一个对象是否包含自定义属性而不是原型链上的属性, 我们需要使用继承自Object.prototype的hasOwnProperty方法。 推荐使用for in时,一定使用hasOwnProperty。
注意以下原型使用方法不同:

aa.prototype.bb = XXX(给aa对象原型上增加属性bb,aa的指针没有变化。)
aa.prototype = bb(将aa对象原型指向别的对象bb,在内存的指针指向bb,发生了变化)
aa.bb=XXX(bb是对象aa的一个自定义属性,没有扩展原型的属性。)

相关文章

  • javascript碎片知识001

    javascript中的对象(原型,原型链) 什么是原型? 原型是JavaScript中的继承的基础,JavaSc...

  • 原型、原型链

    理解JavaScript原型 彻底理解JavaScript原型 原型 原型是一个对象,所有对象都可以成为原型,其...

  • 函数的原型对象

    什么是原型? 原型是Javascript中的继承的继承,JavaScript的继承就是基于原型的继承。 函数的原型...

  • 原型和原型链篇

    原型和原型链 1.理解原型设计模式以及JavaScript中的原型规则 原型设计模式JavaScript是一种基于...

  • js原型、原型链、继承的理解

    一、原型、原型链 原型是Javascript中的继承的基础,JavaScript的继承主要依靠原型链来实现的。 原...

  • 面试题 Javascript

    介绍JavaScript的基本数据类型。 说说写JavaScript的基本规范? JavaScript原型,原型链...

  • JavaScript 基础知识点

    介绍JavaScript的基本数据类型。 说说写JavaScript的基本规范? JavaScript原型,原型链...

  • 一文带你彻底理解 JavaScript 原型对象

    一、什么是原型 原型是Javascript中的继承的基础,JavaScript的继承就是基于原型的继承。 1.1 ...

  • JavaScript面试考点之原型及原型链

    1、JavaScript原型及原型链 1)原型 JavaScript是一种基于原型的语言,即每一个对象拥有一个原型...

  • Javascript学习笔记-原型链

    对于Javascript原型链,是Javascript中很重要的内容,要理解关键有三点:Javascript中原型...

网友评论

      本文标题:javascript的原型

      本文链接:https://www.haomeiwen.com/subject/oysanttx.html