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的继承方法的主要内容,如果未能解决你的问题,请参考以下文章

几个关于js数组方法reduce的经典片段

AJAX相关JS代码片段和部分浏览器模型

js实现继承

JS如何实现继承?

VSCode自定义代码片段——JS中的面向对象编程

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js