js的继承方法
Posted 小顺石
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js的继承方法相关的知识,希望对你有一定的参考价值。
// 1.构造函数的属性
function A(name){
this.name = name // 实例的基本属性(该属性强调私有,不共享)
this.arr = [1] // 实例的引用属性(该属性强调私有,不共享)
this.say = function (){ // 实例的引用属性(该属性强调复用,需要共享)
console.log(\'hello\')
}
}
// 数组和方法都属于 实例的引用属性 数组强调 私有不共享。方法需要复用和共享
// 在构造函数中,很少有数组形式的引用属性,大部分都是基本属性和方法
// 2.什么是原型对象
// 简单来说,每个函数都有一个prototype属性,他就是原型对象
// 通过函数实例化出来的对象,都有一个_proto_属性,指向原型对象。
let a = new A()
console.log(a) A的实例对象
console.log(a._proto_) undefined
console.log(A.prototype)
console.log(A.prototype === a._proto_) false
// constructor: ƒ A(name)
// arguments: null
// caller: null
// length: 1
// name: "A"
// prototype: {constructor: ƒ}
// __proto__: ƒ ()
// [[FunctionLocation]]: index.js:12
// [[Scopes]]: Scopes[2]
// __proto__: Object
// 3.原型对象的作用
/**
* 原型对象的作用是为每个实例存贮共享的方法和属性,
* 它就是一个普通的对象,并且所有的实例共享一个原型对象
* 因此有别于实例的方法或属性,原型对象仅有一份,实例可以有多份
* 并且实例的属性和方法是独立的。
*
* 在构造函数中,为了属性的私有性和方法的复用性,我们提倡
*
* 1.将属性封装到构造函数中
* 2,将方法定义到原型对象上
*
*/
function A(name){
this.name = name // 实例的基本属性(该属性强调私有,不共享)
this.arr = [1] // 实例的引用属性(该属性强调私有,不共享)
// this.say = function (){ // 实例的引用属性(该属性强调复用,需要共享)
// console.log(\'hello\')
// }
}
A.prototype.say = function (){ // 定义在原型对象上的方法(强调复用,需要共享)
console.log(\'hello\')
}
以上是关于js的继承方法的主要内容,如果未能解决你的问题,请参考以下文章