JavaScript学习--js对象、原型、原型链

前言

原型、原型链是学习JavaScript的过程中的一个难点之一,此贴为本人学习JavaScript时留下的学习笔记。

对象

  • JavaScript 对象是拥有属性和方法的数据。
object {
	name:value ,
}

对象也属于变量的一种,它可以使用var来声明,它可以包含多个值(多个变量),每个值以 name:value 对呈现。

var object = {
	name1:value1,
	name2:value2, 
}

对象属性的增删改查

object.新属性 = 值;
delete object.属性     
//delete关键词可以删除对象的属性
object.属性   
//返回值为属性的值
object.属性 = 修改的值

对象的构建方法(两种)

  • 1、var声明
var object = {
	name1:value1,
	name2:value2, 
}
  • 2、构造函数法

系统自带的构造函数 new object()

function Car(){
	this.name = "BMW",
	this.length = "1400",
}

var car = new Car();

构造函数的内部原理

  • 在函数体最前面隐式的加上 this.{}
  • 执行 this xxx = xxx;
  • 隐式的返回this

包装类

  • new String()
  • new Boolean()
  • new Number()

这些方法作用在原始值(数字、字符串、布尔值)上会执行包装类的过程,使得原始值具有属性和方法。

//包装类

var num = 4;
//原始值不能调用属性

num.len = 3;
//当原始值调用属性时会进行包装类
//new number(4).len = 3;生成了一个对象: 4 {len:3}
//执行完之后就会delete这个对象


原型

  • 1、定义:原型是function 对象的一个属性,它定义了构造函数制造出的对象的公共祖先。通过该构造函数产生的对象,可以继承该原型的属性和方法。(原型也是对象)
  • 2、利用原型的特点和概念 ,可以提取共有属性
  • 3、对象如何查看原型 – > 通过隐式属性 proto
  • 4、对象如何查看对象的构造函数 – > 通过隐式属性 constructor
Person.proto.name = "wang";
function Person(){                           //person.prototype 是原型
														
}

var person = new Person();

person.name  //会返回“wang”

如果function内部有this.name = “li“
最后则会返回”li“

原型链

  • 绝大部分的的对象:有__proto__属性(指向其原型链)prototype属性。
  • 原型对象(Person.prototype 原型对象还有constructor属性(指向构造函数对象))
  • 凡是通过new Function()创建的函数对象都拥有__proto__、prototype属性(指向原型对象)。

在这里插入图片描述

原型链是实现继承的主要方法。

原型链基本思路

利用原型让一个引用类型继承另一个引用类型的属性和方法。

每个构造函数都有一个原型对象,原型对象都包含一个指向构造函数想指针(constructor),而实例对象都包含一个指向原型对象的内部指针(proto)。如果让原型对象等于另一个类型的实例,此时的原型对象将包含一个指向另一个原型的指针(proto),另一个原型也包含着一个指向另一个构造函数的指针(constructor)。假如另一个原型又是另一个类型的实例……这就构成了实例与原型的链条。

function Animal(){  
    this.type = "animal";  
}  
Animal.prototype.getType = function(){  
    return this.type;  
}  
  
function Dog(){  
    this.name = "dog";  
}  
Dog.prototype = new Animal();  
  
Dog.prototype.getName = function(){  
    return this.name;  
}  
  
var xiaohuang = new Dog();  
//原型链关系  
xiaohuang.__proto__ === Dog.prototype  
Dog.prototype.__proto__ === Animal.prototype  
Animal.prototype.__proto__ === Object.prototype  
Object.prototype.__proto__ === null 
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冲鸭嘟嘟可

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值