当前位置:首页 > 日记 > 正文

基于js中的原型 | 全面讲解

基于js中的原型 | 全面讲解

在讲js的原型之前,必须先了解下Object和Function。

Object和Function都作为JS的自带函数,Object继承自己,Funtion继承自己,Object和Function互相是继承对方,也就是说Object和Function都既是函数也是对象。

console.log(Function instanceof Object); // trueconsole.log(Object instanceof Function); // true

Object 是 Function的实例,而Function是它自己的实例。

console.log(Function.prototype); // ? () { [native code] }console.log(Object.prototype);  // Object

普通对象和函数对象

JavaScript中万物皆对象,但对象之间也是有区别的。分为函数对象和普通对象。

函数对象可以创建普通对象,普通对象没法创建函数对象,普通对象JS世界中最低级的小喽啰,啥特权也没有。

凡是通过new Function创建的对象都是函数对象,其他都是普通对象(通常通过Object创建),可以通过typeof来判断。

function f1(){};typeof f1 //"function"var o1 = new f1();typeof o1 //"object"var o2 = {};typeof o2 //"object"

这边要注意的是下面这两种写法是一样的

function f1(){};  ==  var f1 = new Function();
function f2(a,b){  alert(a+b);}等价于var f2 = new Function(a,b,"alert(a+b)");

prototype、_proto_和construetor(构造函数)

下面两句话也很重要

1、每一个函数对象都有一个prototype属性,但是普通对象是没有的;

  prototype下面又有个construetor,指向这个函数。

2、每个对象都有一个名为_proto_的内部属性,指向它所对应的构造函数的原型对象,原型链基于_proto_;

好了,开始上代码和例子,建一个普通对象,我们可以看到

  1、o的确没有prototype属性

  2、o是Object的实例

  3、o的__proto__指向Object的prototype

  4、Object.prototype.constructor指向Object本身

  还可以继续往下延伸......

var o = {};  console.log(o.prototype); //undefined  console.log(o instanceof Object); //true  console.log(o.__proto__ === Object.prototype) //true  console.log(Object === Object.prototype.constructor) //true   console.log(Object.prototype.constructor) //function Object()  console.log(Object.prototype.__proto__); //null

下面来一个函数对象,从下面的例子可以看出

1、demo是函数对象,f1还是普通对象

2、f1是Demo的实例

3、demo的原型prototype的__proto__指向Object的原型prototype,而Object的原型prototyped的__proto__指向null;

function Demo(){};  var f1 = new Demo();  console.log(f1.prototype); //undefined  console.log(f1 instanceof Demo); //true  console.log(f1.__proto__ === Demo.prototype); //true  console.log(Demo === Demo.prototype.constructor) ;//true  console.log(Demo.prototype.__proto__ === Object.prototype) ;//true  console.log(Object.prototype.__proto__); //null

原型链

javascript中,每个对象都会在内部生成一个proto 属性,当我们访问一个对象属性时,如果这个对象不存在就回去proto 指向的对象里面找,一层一层找下去,这就是javascript原型链的概念。

f1.__proto__ ==> Demo.prototype ==> Demo.prototype.__proto__ ==> Object.prototype ==> Object.prototype.__proto__ ==> null

JS中所有的东西都是对象,所有的东西都由Object衍生而来, 即所有东西原型链的终点指向null

以上这篇基于js中的原型(全面讲解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

相关文章

JS闭包可被利用的常见场景小结

JS闭包可被利用的常见场景小结

闭包,场景,常见,电脑软件,JS,场景一:采用函数引用方式的setTimeout调用闭包的一个通常的用法是为一个在某一函数执行前先执行的函数提供参数。例如,在web环境中,一个函数作为setTimeout函数调用的第一个参数,是一种很常见的应用。setTimeout将…

ps怎么快速美白中的人物?

ps怎么快速美白中的人物?

快速,人物,电脑软件,ps,如何对照片人物进行美白,想必大家都很感兴趣呢。这也是学习ps的一个基础,但是有些美白方法步骤过于复杂,对于新接触ps的朋友来说就不易于操作了。有没有简单且快速的美白方法呢,答案当然是有的,今天就让我们一起学习,如何…

JS中解决谷歌浏览器记住密码输入框

JS中解决谷歌浏览器记住密码输入框

谷歌浏览器,密码输入框,颜色,功能,电脑软件,谷歌浏览器记住密码输入框颜色会改变,并且字体颜色会变成黑色,如图输入框原来的样式是这样的然而记住密码后,输入框颜色就变成了黄色,并且字体变成了黑色这是由于谷歌浏览器的自带样式的缘故:input:-w…

photoshop 圆形图标按钮

photoshop 圆形图标按钮

图标,电脑软件,按钮,按钮图标,photoshop,最终效果图1、先画一个圆形,分别做出高亮部分和阴暗部分,我用的是:移动选区—羽化—Ctrl+M的方法。 2、画出一个椭圆,稍微羽化一下,涂成白色,做为明亮的边缘线。 3、画个较小的圆,填上较深的颜色…

基于jQuery实现数字滚动效果

基于jQuery实现数字滚动效果

滚动效果,数字,电脑软件,jQuery,滚动方向:上下源代码下载以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!…

js es6系列教程 - 新的类语法实战

js es6系列教程 - 新的类语法实战

实战,教程,选项卡,语法,详解,其实es6的面向对象很多原理和机制还是ES5的,只不过把语法改成类似php和java老牌后端语言中的面向对象语法.一、用es6封装一个基本的类class Person{ constructor( uName ){ this.userName = uName; } s…

详谈Ajax请求中的async:false/true

详谈Ajax请求中的async:false/true

请求,外部调用,作用,电脑软件,async,test.html<a href="javascript:void(0)" rel="external nofollow" onmouseover="testAsync()">asy.jsfunction testAsync(){ var temp; $.ajax({ async: false, //同步请求 type : "GET…

Javascript实现base64的加密解密方

Javascript实现base64的加密解密方

方法,加密解密,示例,电脑软件,Javascript,这几天使用PHP向前端传值的时候,遇到一个问题,要将代码传过去赋值。如果使用urlencode()和urldecode()函数,就会出现js无法解码的情况,因为php和js的相关函数算法不一致。于是准备使用通用的base64加密…

如何在word中竖向排列文字word中竖

如何在word中竖向排列文字word中竖

文字,竖向,排列,步骤,如何在,  或许,你去新华书店或者图书馆曾经看到过这样的书籍,文字是自上而下,自左向右或自右向左的,这种样式的版面是我们国家古代出版的书籍版式,那么下面就由小编给大家分享下在word中竖向排列文字的技巧,希望能帮助到您…

让你彻底掌握es6 Promise的八段代

让你彻底掌握es6 Promise的八段代

让你,代码,电脑软件,Promise,前言新的ES6中引入了promise的概念,目的是让回调更为优雅。层层嵌套的回调会让javascript失去美感和可读性,同时javascript也推荐采用链式的方式去书写函数调用。于是Promise就应运而生。本文将通过八段代码让大…

怎么在word中对齐自选图像在word中

怎么在word中对齐自选图像在word中

对齐,图像,步骤,方法,图形,  在word中,有时需要插入图形,当有多个图像时,手动对齐比较麻烦。下面小编教你怎样在word中对齐自选图像。word对齐图形的步骤打开需要对齐的文档,如图:word对齐图形的步骤图1  按住【ctrl】键依次选中需要对齐的…

Word中2010版进行设置文本框样式和

Word中2010版进行设置文本框样式和

设置,文本框,操作技巧,样式,颜色,  如何在Word2010中设置文本框样式和颜色。去除文本框的外边框。以及更改外边框的颜色和样式。今天,小编就教大家在Word中2010版进行设置文本框样式和颜色的操作技巧。Word中2010版进行设置文本框样式和颜…