JavaScript —— 构造函数

// 构造函数
function Player(name, age) {
this.name = name;
this.age = age;
}

JavaScript —— 静态方法

// 静态方法(只可用【构造函数】名字调用,不可用【实例对象】名字调用)
Player.turnover = function () {
console.log('我会失误');
}
Player.turnover();
curry.turnover(); // 报错
  • curry.turnover();

JavaScript —— 实例化对象

let curry = new Player('库里', 21);
let young = new Player('杨', 21);

JavaScript —— 原型对象

(在构造函数中定义方法的话,每次当实例化对象的时候,每次都会在不同的地址上存储方法,而【原型对象】作用是把各个对象相同的方法都存放在同一个存储地址上(其实就只生成了一个方法),节省内存空间)

Player.prototype.shot = function () {
console.log('我会射球');
}
curry.shot();
young.shot();
// 打印:curry.shot === young.shot: true
console.log(`curry.shot === young.shot: ${curry.shot === young.shot}`);

JavaScript —— 对象原型

(为什么实例化出来的对象能调用Player.prototype【原型对象】上的shot方法呢,是因为每个实例化出来的对象中都包含有一个__proto__【对象原型】,而这个对象原型__proto__指向Player.prototype原型对象)

console.log(curry);
// 打印:curry.__proto__ === Player.prototype: true
console.log(`curry.__proto__ === Player.prototype: ${curry.__proto__ === Player.prototype}`);
// 只要是对象就有__proto__原型,指向原型对象(prototype)
// Player.prototype.__proto__指向的是Object.prototype
// 而Object.prototype.__proto__指向的是 null
console.log(Player.prototype.__proto__ === Object.prototype); // 打印:true
console.log(Object.prototype.__proto__); // 打印:null
  • console.log(curry);

JavaScript —— 构造函数属性

(对象原型(proto) 和 原型对象(prototype)里面都有一个属性constructor(构造函数)属性,它指回构造函数本身,主要用于记录对象【引用于哪个构造函数】,当我们用下列方式为Player.prototype(原型对象)添加方法的时候,需要手动添加constructor属性让Player.prototype指回原来的构造函数)

Player.prototype = {
constructor: Player,
shot: function () { },
turnover: function () { }
}
console.log(Player.prototype.constructor);
console.log(curry.__proto__.constructor);
  • console.log(Player.prototype.constructor);
  • console.log(curry.__proto__.constructor);

JavaScript —— 原型链

JavaScript 之 原型对象、对象原型 —— { }的更多相关文章

  1. 浅谈系列之 javascript原型与对象

    在我学习与使用javascript三个月中,我一直对javascript的继承关系以及prototype理解不清,导致很多时候为什么这么用说不出个所以然来.截止到本周为止,通过之前的学习以及自己的再学 ...

  2. javascript中的对象,原型,原型链和面向对象

    一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...

  3. web前端学习(二) javascript对象和原型继承

    目录 1. JavaScrpt对象 2. 原型对象和继承 3. 对象的克隆 (1)javascript对象 在JS中,对象是属性的容器.对于单个对象来说,都由属性名和属性值构成:其中属性名需要是标识符 ...

  4. Javascript函数、构造函数、原型、类和对象

    函数 函数是JavaScript中特殊的对象,对函数执行typeof运算会返回字符串"function",因为函数也是对象,他们可以拥有属性和方法. 静态方法 函数在JS中定义了类 ...

  5. Javascript中的对象和原型(3)

    在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...

  6. (转载)JavaScript中的原型和对象机制

    (转载)http://www.cnblogs.com/FlyingCat/archive/2009/09/21/1570656.html 1 对象相关的一些语言特性 1.1 一切皆为对象JavaScr ...

  7. Javascript中的对象和原型

    一 原型对象 原型对象实际上就是构造函数的一个实例对象,和普通的实例对象没有本质上的区别.可以包含特定类型的所有实例的共享属性或者方法.这样,如果我们需要修改所有实例中的属性或者方法,就只需要修改一处 ...

  8. javascript学习-对象与原型

    javascript学习-对象与原型 Javascript语言是符合面向对象思想的.一般来说,面向对象思想需要满足以下三个基本要求: 封装,Javascript的对象可以自由的扩充成员变量和方法,自然 ...

  9. JavaScript概念总结:作用域、闭包、对象与原型链

    1 JavaScript变量作用域 1.1 函数作用域 没有块作用域:即作用域不是以{}包围的,其作用域完成由函数来决定,因而if /for等语句中的花括号不是独立的作用域. 如前述,JS的在函数中定 ...

  10. 理解javascript 对象,原型对象、闭包

    javascript作为一个面向对象的语言,理解 对象.原型.闭包.模块模式等技术点对于成为一名合格的javascript程序员相当重要,多年没写过blog,今天就先拋个玉,在下基本也不做前端,但颇感 ...

随机推荐

  1. jieba分词原理解析:用户词典如何优先于系统词典

    目标 查看jieba分词组件源码,分析源码各个模块的功能,找到分词模块,实现能自定义分词字典,且优先级大于系统自带的字典等级,以医疗词语邻域词语为例. jieba分词地址:github地址:https ...

  2. SpringBoot项目启动org.springframework.context.ApplicationContextException: Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException解决方法

    将Pom文件中的SpringBoot版本调低即可. 我的是调成了2.5.6

  3. Linux下修改RabbitMQ密码

    1,首先查看用户列表 rabbitmqctl list_users 2,修改对应用户密码 其中username 为用户名, newpasswd为新密码 rabbitmqctl change_passw ...

  4. NC19115 选择颜色

    NC19115 选择颜色 题目 题目描述 \(n\) 个人排成一个环形,每个人要从 \(c\) 种颜色中选择一个. 牛牛希望相邻的人选择的颜色是不同的 问有多少种方案. 输出方案数对 \(10007\ ...

  5. VS code 远程连接服务器步骤

    ①安装VS code,并连接远程服务器(本地也需要有ssh).参考 ②免密钥登录设置,参考 具体步骤:WIN+R -->cmd, 输入ssh-keygen,然后一直Enter,最终生成公钥和私钥 ...

  6. 攻防世界MISC进阶区—48-51

    48.Become_a_Rockstar 得到无类型文件,010 Editor打开为几段话,看到标示性的NCTF{),怀疑是用脚本加密后的结果,网上查了一下,得知Rockstar是一种语言,用rock ...

  7. 2022-07-13 第六组 润土 Java01学习笔记

    1.数据类型: 基本数据类型: 整型: byte 字节型 -128-127 1个字节 short 短整型 2个字节 int 整型 4个字节 long 长整型 8个字节 浮点型: float 单精度 4 ...

  8. Phabricator Conduit API介绍

    在Phabricator页面,可以完成创建和编辑Project.Task等操作.但是如果想实现外部系统可以自主操作Phabricator,那么就需要调用Phabricator Conduit API, ...

  9. 006面试题__创建String对象

    常见面试题: String s = new String("hello"); 问:创建了几个对象? 答:2个 1. 创建了一个字符常量池,指向了"hello"字 ...

  10. Linux修改CST时间为UTC时间。

    1.编辑配置文件添加如下内容 [root@Centos8-template ~]# vim /etc/sysconfig/clock ZONE="Etc/UTC" 2.生成链接 [ ...