JavaScript中的原型!

原型的内容是涉及到JavaScript中的构造函数的

每一个构造函数都有一个原型对象!prototype

他的作用是 共享方法!还可以扩展内置对象【对原来的内置对象进行扩展自定义的方法!】

每一个实例化的对象都有一个对象原型__proto__

他指向的是构造函数的原型对象

所以我们创建的实例对象可以使用对象原型中的方法!

__proto__对象原型和原型对象prototype是等价的

__proto__对象原型的意义就在于为对象的查找机制提供一个方向,或者说一条路线,但是它是一个非标准属性,因此实际开发中,不可以使用这个属性,它只是内部指向原型对象prototype

看不见我, 看不见我,看不见我!

构造函数!

对象原型(proto)和原型对象(prototype)里面都有一个constructor属性!, constructor我们称之为构造函数, 因为它指回构造函数本身!

constructor主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数

   <script>
// 构造函数的问题!
function Gouzaohanshu(name, age, gender) {
this.name = name;
this.age = age;
this.gender = gender;
// this.hanshu = function() {
// console.log(123)
// }
} // 把构造函数放到我们的原型对象身上!
// Gouzaohanshu.prototype.hanshu = function () {
// console.log(123)
// }
//很多情况下,我们需要手动的利用 constructor这个属性指固原来的构造函数
// Gouzaohanshu.prototype.sleep = function() {
// console.log("我想睡觉!")
// } // 如果对象比较多, 那么我们就可以采取对象的形式存储!
// 但是如果你这样做的话会把原先的原型对象给覆盖了!
// 原先的原型对象就不会指向上面的构造函数了! // 解决方法
// 在下面的对象中添加这样一句代码!
// construtor: Gouzaohanshu,
// 就可以让构造函数指回他的本身了!
// 一句话, 如果我们修改了原来的原型对象, 给原型对象赋值是一个对象, 则必须手动的利用constructor 指回原来的构造函数!
Gouzaohanshu.prototype = {
construtor: Gouzaohanshu,
hanshu() {
console.log(123)
},
sleep: function() {
console.log("我想睡觉!")
}
} var gz = new Gouzaohanshu('lvhang', 23, 'nan');
// 在我们创建的对象身上也有一个对象叫做!
// __prototype__ 叫做对象的原型!
// 它指向我们构造函数的原型对象!
var gz2 = new Gouzaohanshu('lvhang', 23, 'nan');
gz.hanshu()
// __proto__对象的原型和原型对象prototype是等价的
console.log(gz.__proto__ === Gouzaohanshu.prototype); // true
// 方法的查找规则:首先先看gz对象身上是否有hanshu方法,如果有就执行这个对象上的hanhsu方法
// 如果没有这个方法,因为有__proto__,就去构造函数原型对 Prototype身上去查找 // constructor主要用于记录该对象引用于哪个构造函数,它可以让原型对象重新指向原来的构造函数
console.log(gz.__proto__);
console.log(Gouzaohanshu.prototype); </script>

JavaScript中的构造函数和原型!的更多相关文章

  1. javascript中的构造函数和原型及原型链

    纯属个人理解,有错误的地方希望大牛指出,以免误人子弟 1.构造函数: 构造函数的作用 : 初始化由new创建出来的对象    new 的作用: 创建对象(空对象) new 后面跟的是函数调用,使用ne ...

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

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

  3. JavaScript中的构造函数

    目录: constructor & prototype 为构造函数添加属性和方法的多种不同方法 组合使用this和prototype关键字创建构造函数(常用方法) 用对象直接量作为构造函数的参 ...

  4. Javascript中的对象和原型(三)(转载)

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

  5. Javascript中的对象和原型(一)(转载)

    面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...

  6. JavaScript中的构造函数和工厂函数说明

    在cnblog上看到一篇文章,讲解JS中的构造函数和工厂函数,觉得讲的真好 JavaScript中的工厂函数和构造函数都能用来创建一个对象,我们可以来看看下面的例子 构造函数 function cre ...

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

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

  8. JavaScript中的继承(原型链)

    一.原型链 ECMAScript中将原型链作为实现继承的主要方法,基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 实例1: function SupType() { this.pro ...

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

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

随机推荐

  1. Python手把手教程之用户输入input函数

    函数input() 函数 input() 让程序暂停运行,等待用户输入一些文本.获取用户输入后,Python将其存储在一个变量中,以方便你使用. 例如,下面的程序让用户输入一些文本,再将这些文本呈现给 ...

  2. 1.mysql表优化和避免索引失效原则

    表优化 1.单表优化 建立索引 根据sql的实际解析顺序建立复合索引 最佳左前缀,保持索引的定义和使用顺序一致 2.多表优化 连接查询 小表驱动大表:对于双层循环来说,外层循环(数据量)越小,内层循环 ...

  3. 隐语义模型LFM

      隐语义模型是通过隐含特征,联系用户和物品,基于用户的特征对物品进行自动聚类,然后在用户感兴趣的类中选择物品推荐给用户. 对于推荐系统,常用的算法: USER-CF:给用户推荐和他兴趣相似的用户喜欢 ...

  4. 简单谈谈网络抓包,特别是thrift 接口

    按照惯例先谈谈最近情况,最近不是刚好跨年吗?看到很多人都在写年度总结,所以我也在写年度总结文章(其实之前我基本没有写过的,今年有点感触,也想记录一下),结果发现写起来有点多,之前还想着元旦前发出来,结 ...

  5. cmake的安装

    安装cmake有2种方式 安装方式1:源码安装 1.下载cmake源码包(https://cmake.org/download/),解压后进入解压目录 2.执行安装配置命令:配置软件二进制安装到/us ...

  6. APP逆向案例---x会app

    步骤一 抓个包 其中m_d,m_e为加密参数 步骤二(已经看了是360加固我们脱壳一下) # Author: hluwa <hluwa888@gmail.com> # HomePage: ...

  7. 第四章节 BJROBOT 线速度校正 【ROS全开源阿克曼转向智能网联无人驾驶车】

    BJROBOT 线速度校正   1.把小车平放在地板上,用卷尺作为测量刻度,选取车头或者车尾处作为小车的起点, 打开资料里的虚拟机,打开一个终端 ssh 过去主控端启动 roslaunch znjro ...

  8. Apache本机不同端口多站点配置:httpd-vhosts.conf(转载)

    环境:Apache2.2.9,Resin-3.1.6,Win Server 2003 1.解压Resin至任意目录,我的是D:; 2. 安装Apache,具体操作下一步.下一步即可,其中要配置的地方是 ...

  9. .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ HelloWorld)--学习笔记

    2.6.3 RabbitMQ -- HelloWorld 发送端 接收端 rabbitmq container 发送信息 https://www.rabbitmq.com/tutorials/tuto ...

  10. 洛谷P1055 字符串的处理-----ISBN

    题目描述 每一本正式出版的图书都有一个ISBN号码与之对应,ISBN码包括99位数字.11位识别码和33位分隔符,其规定格式如x-xxx-xxxxx-x,其中符号-就是分隔符(键盘上的减号),最后一位 ...