美文网首页
原型的应用

原型的应用

作者: 海子小夜曲 | 来源:发表于2018-12-11 19:35 被阅读0次

原型的实际应用

1,将特有的属性 写在构造函数内部

特有属性 就是指 那些随着对象不同而发生变化的属性:比如 name,age,sex

2,将共有的属性 写在原型上

公有属性:同类对象,都有的属性,并且值相同,或者代码逻辑相同

一般对象的行为(方法)是公有的,都应该写到原型上,实现继承。

原型链

1,原型的本质也是对象,就具有__proto__属性。所以原型对象也有原型

2,任何对象都存在一条链,在这条链上都是原型。将这条链称为原型链。但是原型链不是无穷无尽的。尽头是Object.prototype。

3,默认原型对象的原型就是Object.prototype。

4,实质原型链是通过__proto__串联在一起的,同时原型链是用来体现继承关系的链式结构

属性搜索原则

当一个对象访问某个属性时,

1,首先在当前对象检索该属性。如果找到就使用。停止搜索

2,如果没找到,就像其原型搜索,就返回该属性值。找到就停止

3,如果没找到,就像其原型搜索,再没有,再往上,找到就返回该属性值。找到就停止。直到Object.prototype。没有就返回undefined

如果访问的属性是该对象不存在的属性,会检索整个原型链上的所有对象,会导致js性能降低。检索的属性在原型链上越是靠后,检索性能越低。

在访问属性时,靠前的原型上的同名属性,会覆盖后面原型上的值。

绘制原型链

1,写出原型链

2,将链上 的所有对象依次绘制出

instanceof运算规则

1,语法:<对象>  instanceof  函数

2,用来判断对象是否为指定函数的实例。 返回布尔值

3,运算规则

如果函数的原型出现在该对象的原型链上的话,表达式返回值为true。否则false。

Object.prototype上一些方法

1,hasOwnProperty

*语法:<对象>.hasOwnProperty('propName')

*功能:用来判断,属性是自己的还是继承的

2,propertyIsEnumerable

*语法:<对象>.propertyIsEnumerable('propName')

*功能:是上一个方法的加强版。

*是自己属性

*而且是可枚举的。(使用 for in可遍历到的属性,即可枚举属性)

3,isPrototypeOf

*语法:<对象a>.isPrototypeOf(对象)

*功能:判断对象a是不是对象b的原型。

4,valueOf

*语法:<对象a>.isPrototypeOf()

*功能:将制定对象类型的数据,转换成基本类型

*规则:

*如果该对象是基本数据的包装类型,会转换成其对应的基本数据类型

*否则为其他对象类型,就直接返回该对象

5,。 toString

*语法:<对象>.toString()

*功能:负责展示对象的基本信息(对象的类型 type of 的返回值,以及其构造函数)

*返回值为“【typeof 的返回值 构造函数的额名字】”

函数

1,函数创建方式

*声明式

*函数表达式

*构造函数模式  var f =new Function();

2,Function构造函数

*语法 var f =new Function([argi~argN],body);

*[argi~argN] 类型为字符串,可选参数。用来定义生成函数f的形参

*body 类型为字符串,可选。用来实现函数体

*如果没有传参,生成一个没有形参

3,函数也是一种对象类型

eval方法

1,json数据

*以键值对形式存储数据。

*键 必须是字符串类型并且用两个双引号来表示字符串

*值 除了数字类型,其他都必须用双引号包裹起来。

2,json在数据传输时,客户端得到的是一个字符串类型,在实际操作时必须转换成对象才能解析数据。

3,由于eval方法可以将一段字符串就当做js代码来执行。因此使用json做数据传输的案例中,可以使用eval来将json字符串 转换成js对象

4.应用场景

在使用Ajax做无刷新页面时,通常使用json作为数据传输格式,所以要使用eval方法来将字符串转换成对象格式

5,在没有严格模式,eval可以随意指定一段字符串当做js代码来执行。

*脚步注入

*全局变量以及全局对象污染

eval创建变量的作用域 是有eval执行的作用域决定的

6,使用(new Function(str))();也可以将str字符串当做js代码来执行,同时他有一个好处-不会污染全局变量以及全局对象。

所有函数的原型都是Function.prototype. 

Function()  本身也是函数对象。因此他也有__proto__属性。

一般函数都有prototype属性。但是Function.prototype这个

函数没有prototype属性。因为他是一个原型,具有原型属性。

相关文章

  • 原型的应用

    原型的实际应用 1,将特有的属性 写在构造函数内部 特有属性 就是指 那些随着对象不同而发生变化的属性:比如 na...

  • 2020-05-20 JS原型链

    1 原型链图 2 原型链的应用 loading....

  • 个人对面向对象的理解

    我对原型和原型链式这样理解的,原型和原型链在javascript当中主要用来体现对象 与属性之间的关系,它主要应用...

  • (六)设计思维之原型设计

    要点 原型设计及其重要性 如何应用原型设计 原型设计的难点与关键点 理解:原型设计强调的是用最短的时间和成本实现解...

  • 四、js实现继承的几个方法

    1. 原型链 原型链是实现继承的主要方法,它是利用原型,让一个引用类型继承另一个应用类型的属性和方法。 实现原型链...

  • 学习应用市场的学习Axure RP原型

    编号:0145 App Store苹果应用市场Axure RP原型

  • 原型制作|商业模式设计技法(4)

    一、什么是原型? 原型制作(Prototyping)来自设计和工程领域,在这些领域中,原型制作被广泛地应用于产品设...

  • 1.3 创建型-原型模式

    原型模式应用场景:如果对象创建比较复杂,可以通过原型模式,使用clone的复制来创建新的对象 原型模式组成要素: ...

  • 4、原型和面向对象

    实例化和原型 在JavaScript中,使用原型定义的属性和功能会自动应用到对象的实例上,一但进行了定义,原型的属...

  • DAY4

    原型对象的应用 扩展内置对象方法 注意!!数组和字符内置对象不能给原型对象覆盖操作Array.prototype=...

网友评论

      本文标题:原型的应用

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