博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
原型链
阅读量:6911 次
发布时间:2019-06-27

本文共 1787 字,大约阅读时间需要 5 分钟。

基本概念:

  • 在js中,一切皆对象
  • 每个对象都有一个指向它的原型的的内部链接(此链接还没有规范的访问方式,一般用__proro__代替),这个原型也有自己的原型,直到每个对象的原型为null为止
  • 任意一个函数都可以作为构造器即var someFun = new AnyFun()
  • 每个函数都有一个prototype属性,其它对象没有,该属性也是一个对象,该对象有一个constructor属性指向该函数
  • 使用new去实例化一个函数后,得到的是一个对象。该函数的实例的原型指向构造函数的prototype属性

API

1.instanceof,判断对象是否是构造函数的实例
2.getPrototypeOf()

函数对象和普通对象

函数对象:通过new Function(),得到的对象,有_proto_和prototype两个属性
普通对象:通过非Function()函数new得的对象,有_proto_一个属性
总结:凡是通过 new Function() 创建的对象都是函数对象,其他的都是普通对象。
图片描述

图片描述

面向对象思想写tab切换

a.定义构造函数,并确定实例拥有的属性b.给原型添加行为,即方法c.实例化对象

1.

    
面向对象Tab切换
div1
div2
div3

2.

    
面向对象TAB切换
1
2
3

3.

    
面向对象TAB切换
1
2
3
1
2
3

原型prototype、对象、构造函数

对象:属性跟方法的集合,属性是静态的数据,方法即行为,操作数据
构造函数:在函数的前面出现new关键字,js内置的构造函数,Date/Object/RegExp/String/Number/Boolean/Function
自定义构造函数:按照约定,首字母大写,跟普通函数区分
调用: new Person() 返回实例对象
var o = new Object();
Object.prototype === o.__proto__

原型prototype、对象、构造函数关系

对象是由构造函数创建,实例化的,字面量赋值,语法糖
对象的属性/方法的查找,a.先从自身查找,找到返回,b.找不到沿着原型链上查找,找到返回,找不到重复b步骤,直到顶级Object.prototype

构造函数、原型、实例三者之间的关系

构造函数:函数调用前存在关键字new的

a.定义,为了跟普通函数区分,按照约定首字母大写

b.调用时使用关键字new
c.返回值,创建出来的实例
d.内部的this,指向创建出来的实例

函数定义,必存在prototype属性,指向原型

原型:属性跟方法的集合,也是一个对象[__proto__]

实例:通过构造函数创建出来的对象必存在属性__proto__,指向原型,对象属性的查找,先从自身查找,找不到,沿着原型链从原型查找...

换句话说,对象的属性跟方法从原型上继承下来,对象的属性、方法可以重写

转载地址:http://yqfcl.baihongyu.com/

你可能感兴趣的文章
Java数据结构和算法(五)——队列
查看>>
jQuery
查看>>
Java实现爬虫示例
查看>>
JNA 基础篇<二> 结构体
查看>>
电脑上怎么将PDF图纸文件快速转换成DWG格式CAD图纸?
查看>>
Docker部署微服务详解
查看>>
我的友情链接
查看>>
MySQL常用函数大全
查看>>
以MYSQL作为HIVE的元数据库,配置HIVE的远程连接
查看>>
写在认证过后
查看>>
swap分析及行溢出分析ml
查看>>
我的友情链接
查看>>
PHP之pcntl_fork多进程并发编程示例
查看>>
Java内存区域与内存溢出异常
查看>>
nfs
查看>>
在C#中调用批处理文件
查看>>
C语言字节对齐
查看>>
怎样区别nginx中rewrite时break和last
查看>>
开发HBase的时候需要搭建的Eclipse总结
查看>>
Mysql数据库修复
查看>>