JavaScript中的构造函数和原型!
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中的构造函数和原型!的更多相关文章
- javascript中的构造函数和原型及原型链
		
纯属个人理解,有错误的地方希望大牛指出,以免误人子弟 1.构造函数: 构造函数的作用 : 初始化由new创建出来的对象 new 的作用: 创建对象(空对象) new 后面跟的是函数调用,使用ne ...
 - Javascript中的对象和原型(3)
		
在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...
 - JavaScript中的构造函数
		
目录: constructor & prototype 为构造函数添加属性和方法的多种不同方法 组合使用this和prototype关键字创建构造函数(常用方法) 用对象直接量作为构造函数的参 ...
 - Javascript中的对象和原型(三)(转载)
		
在Javascript中的对象和原型(二)中我们提到,用构造函数创建的对象里面,每个对象之间都是独立的,这样就会降低系统资源的利用率,解决这样问题,我们就要用到下面提到的原型对象. 一 原型对象 原型 ...
 - Javascript中的对象和原型(一)(转载)
		
面向对象的语言(如Java)中有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.但是,JavaScript 没有类的概念,因此它的对象也与基于类的语言中的对象有所不同. 要了解面向对象,首 ...
 - JavaScript中的构造函数和工厂函数说明
		
在cnblog上看到一篇文章,讲解JS中的构造函数和工厂函数,觉得讲的真好 JavaScript中的工厂函数和构造函数都能用来创建一个对象,我们可以来看看下面的例子 构造函数 function cre ...
 - javascript中的对象,原型,原型链和面向对象
		
一.javascript中的属性.方法 1.首先,关于javascript中的函数/“方法”,说明两点: 1)如果访问的对象属性是一个函数,有些开发者容易认为该函数属于这个对象,因此把“属性访问”叫做 ...
 - JavaScript中的继承(原型链)
		
一.原型链 ECMAScript中将原型链作为实现继承的主要方法,基本思想是利用原型让一个引用类型继承另一个引用类型的属性和方法. 实例1: function SupType() { this.pro ...
 - Javascript函数、构造函数、原型、类和对象
		
函数 函数是JavaScript中特殊的对象,对函数执行typeof运算会返回字符串"function",因为函数也是对象,他们可以拥有属性和方法. 静态方法 函数在JS中定义了类 ...
 
随机推荐
- 如何修改openstack虚拟机密码
			
1.虚拟机创建时设置密码 计算节点安装以下软件包 yum install libguestfs python-libguestfs libguestfs-tools-c 配置计算节点nova配置文件/ ...
 - Linux工具包
			
Linux的工具包 JDK 版本:14 百度网盘:链接: https://pan.baidu.com/s/1hWqGVmsElOCBufMuscPXzw 密码:st3y 安装步骤: 1.使用S ...
 - .NET Core 下的 API 网关
			
网关介绍 网关其实就是将我们写好的API全部放在一个统一的地址暴露在公网,提供访问的一个入口.在 .NET Core下可以使用Ocelot来帮助我们很方便的接入API 网关.与之类似的库还有Proxy ...
 - mysqld程序结构介绍
			
说明:mysqld程序结构模型就是------> SQL语句的执行过程· 分为三大部分:连接层,SQL层,存储引擎层 #1.连接层功能 (1).TCP/IP或者Socket的连接方式 (2 ...
 - 《C++ 程序设计》读书笔记
			
本文联合编辑:小辣辣.向她致以最崇高的敬(爱)意 第一章 C++的初步认识 在程序进行编译时,先对所有的预处理命令进行处理,将头文件的具体内容代替 #include 指令,然后再对该程序单元进行整体编 ...
 - Java动态代理分析
			
Java动态代理机制的出现,使得Java开发人员不用手工编写代理类,只要简单地制定一组接口及委托类对象,便能动态地获得代理类.代理类会负责将所有的方法调用分配到委托对象上反射执行,配置执行过程中,开发 ...
 - 史上最全java里面的锁
			
什么是锁 在计算机科学中,锁(lock)或互斥(mutex)是一种同步机制,用于在有许多执行线程的环境中强制对资源的访问限制.锁旨在强制实施互斥排他.并发控制策略. 锁通常需要硬件支持才能有效实施.这 ...
 - spring mvc与mybatis与maven+mysql框架整合
			
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"% ...
 - 如何定位CPU瓶颈?
			
CPU是通常大家最先关注的性能指标,宏观维度有核的CPU使用率,微观有函数的CPU cycle数,根据性能的模型,性能规格与CPU使用率是互相关联的,规格越高,CPU使用率越高,但是处理器的性能往往又 ...
 - Kali实现靶机远程控制
			
任务一.使用netcat建立监听并连接 1. 在ubuntu开启本地监听,在kali中连接 2. 在kali中开启监听,在ubuntu中反弹连接 任务二.使用met ...