构造函数更改或新增原型链

构造函数:

  1. 构造函数返回默认原始值时(实例),构造函数通过prototype设置该构造函数的原型链,如下:

    function Person (name) {
         
    	this.name = name
    }
    Person.prototype.getName = function () {
         
    	return `你好!${
           this.name}`
    }
    const person = new Person('张三')
    person.getName() // 你好!张三
    
  2. 如果构造函数返回指定对象时,则不能通过prototype设置原型链,如下:

    注意:如果构造函数返回非对象时,则会忽略该返回值,构造函数继续会返回原始值(默认的实例)

    function Person (name) {
         
    	this.name = name
    	return {
         
    		nameMsg: `你好!${
           this.name}`
    	}
    }
    // 下面代码不会报错,但是getName方法无法添加到原型链上
    Person.prototype.getName = function () {
         
    	return `我是${
           this.name}`
    }
    const person = new Person('张三')
    console.log(person.nameMsg) // 你好!张三
    person.getName() // 会报错:person.getName is not a function,因为getName无非正常添加到原型链上
    
  3. 类是构造函数的语法糖,3.1的例子可以进行如下改写:

    class Person {
         
    	constructor(name) {
         
    		this.name = name
    	}
    	getName () {
         
    		return `你好!${
           this.name}`
    	}
    }
    // 由于类是构造函数的语法糖,所以你仍然可以通过prototype来设置原型链的方法,
    // 如下重新设置的getName方法会覆盖类声明getName
    // Person.prototype.getName = function () {
         
    //  return `我是${this.name}`;
    // };
    const person = new Person ("张三")
    console.log(person.name) // 张三
    console.log(person.getName()) // 你好!张三
    

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-26 18:36:05       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-26 18:36:05       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-26 18:36:05       87 阅读
  4. Python语言-面向对象

    2024-01-26 18:36:05       96 阅读

热门阅读

  1. Python中如何向列表中添加元素?

    2024-01-26 18:36:05       57 阅读
  2. 什么是多视角回归?

    2024-01-26 18:36:05       52 阅读
  3. 列举MySQL对于Where子句的优化

    2024-01-26 18:36:05       46 阅读
  4. SQLite 简介

    2024-01-26 18:36:05       54 阅读
  5. Android IdleHandler 接口详解

    2024-01-26 18:36:05       51 阅读
  6. CentOS7 安装JDK、部署Jar包

    2024-01-26 18:36:05       52 阅读
  7. Azure AD 和 Identity Server4 客户端身份验证和授权

    2024-01-26 18:36:05       50 阅读
  8. 静态函数的定义与申明

    2024-01-26 18:36:05       47 阅读
  9. 多旋翼无人机能够在空中悬停

    2024-01-26 18:36:05       49 阅读
  10. linux系统nginx工具接口压力测试工具和关联php页面

    2024-01-26 18:36:05       50 阅读
  11. 测试用例相关问题

    2024-01-26 18:36:05       42 阅读
  12. uni-app 国际化

    2024-01-26 18:36:05       53 阅读
  13. html转换成图片

    2024-01-26 18:36:05       53 阅读