一、前言

  我们先通过代码来分别打印出实例对象、构造函数,以及修改了原型对象的构造函数,通过对比内部结构来看看他们之间的区别。

//定义构造函数
function Person(name, age){
this.name = name;
this.age = age;
this.play = function(){
console.log('玩好玩的')
}
}
//实例化对象,并初始化赋值
var per = new Person('kitty', '3'); //打印实例对象
console.dir(per);
//打印构造函数
console.dir(Person)

我们创建的每一个函数都会有一个原型(prototype)属性,这个属性是一个指针,指向函数的原型(prototype)对象。使用原型对象可以让构造函数的实例对象共享原型对象包含的属性和方法,而不会像工厂模式或者构造函数模式那样,方法本应该是可以是通用的,可是每一个创建的对象实例都要各自复制一份

javascript的构造函数和实例对象、prototype和__proto__的区别,原型对象及构造器的理解的更多相关文章

  1. js高级——构造函数,实例对象和原型对象——prototype、__proto__和constructor构造器

    一.前言 了解JavaScript面向对象,需要先了解三个名词: 构造函数,实例对象和原型对象. 注意:JavaScript中没有类(class)的概念,取而代之的是构造函数,两者类似却又有很大的差别 ...

  2. JavaScript中的原型prototype和__proto__的区别及原型链概念

    问题 初学js的同学,总是搞不清楚js中的原型是什么东西,看着控制台打印出来的一串串__proto__,迷惑不已. 例如我定义一个Person,创建一个实例p,并打印实例. function Pers ...

  3. 面试题常考&必考之--js中的难点!!!原型链,原型(__proto__),原型对象(prototype)结合例子更易懂

    1>首先,我们先将函数对象认识清楚: 补充snow的另一种写法: var snow =function(){}; 2>其次:就是原型对象 每当我们定义一个函数对象的时候,这个对象中就会包含 ...

  4. javascript 原型(prototype 、__proto__、函数、对象)

    一.类型 1.JavaScript中分为值类型(string/boolean/null/number/undefind).引用类型(数组.对象.函数): 2.数组.函数.对象都是对象: 对象是由函数创 ...

  5. 【前端】JavaScript中prototype和__proto__的区别

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/prototype.html 经常有小伙伴问我关于prototype和__proto__的问题,觉得有必要写一篇博客 ...

  6. 2 new出的对象 prototype与__proto__

    对象没有原型对象,函数才有 new出的对象,this的会重新创建,二prototype并不会重新创建,而是追溯原型链的方式进行继承 var Book=function(id,bookname,pric ...

  7. 彻底理解什么是原型链,prototype和__proto__的区别以及es5中的继承

    再讲一遍好了( 参考https://blog.csdn.net/cc18868876837/article/details/81211729 https://blog.csdn.net/lc23742 ...

  8. 浅谈JavaScript原型对象与相关设计模式

    引言 本文先从介绍JavaScript中基本的几种设计模式开始,最后引出原型对象,然后对原型对象有一个较全面的介绍. 1.创建对象的几种设计模式 A.工厂模式 我们知道在JavaScript中创建对象 ...

  9. 【原创】javascript——prototype与__proto__

    一定要注意这个概念:javascript世界里,万物皆对象, function是对象,prototyp也是对象.   新建构造函数,并实例 var Person = function(){} var ...

随机推荐

  1. Qt Creator 模块QtSql

    在新建Qt Gui Application时,没有弹出模块选择页, 可以手动在pro文件中增加. 比如要选中QtSql模块,(目前我没有找到哪里可以修改要选中的模块), 我是手动在pro文件中增加了一 ...

  2. Java判断String类型变量是否可以转换数字类型

    正则表达式 首先要import java.util.regex.Pattern 和 java.util.regex.Matcher public boolean isNumeric(String st ...

  3. 使用 某款基于Socks5协议的代理软件 一段时间后 被封锁掉IP的一些技术思考

    由于关键词比较敏感为了不被删除帖子所以文中某软件(上图所示软件)不用全称表示. 去年9月末在 在某国外网站 上弄了一个vpn,在上面安装了某软件,使用起来还是蛮不错的,平时查查英文论文,看看美剧还是比 ...

  4. test20181019 B君的第二题

    题意 分析 快速子集和变换以及快速超集和变换的裸题. 用\(f(s)\)表示集合s的方案数,初始化为输入中s出现的次数. 做一遍快速子集和变换,此时f(s)表示s及其子集在输入中出现的次数. 对所有f ...

  5. ThinkPHP think-migration 简洁使用教程

    ThinkPHP think-migration 简洁使用教程 migration:一种数据库的版本控制,让团队在修改数据库结构的同时,保持彼此的进度一致.帮你更简单的管理数据库.基于原生 think ...

  6. Apache Tomcat8必备知识(完整的支持WebSockets 1.0)

    一.Apache Tomcat 8介绍 Apache Tomcat 8RC1版于前几日发布.它 经过了2年的开发,引入了很多新特征,由于目前还只是Alpha版,故不推荐在产品中使用.但是我们应该了解它 ...

  7. TCP heart

    http://blog.csdn.net/lisonglisonglisong/article/details/51327695

  8. 在NOILINUX下的简易VIM配置

    位置:/etc/vim/vimrc 建议使用gedit来进行配置.即使用命令:sudo gedit /etc/vim/vimrc set mouse=a " Enable mouse usa ...

  9. (转)2009-05-25 22:12 Outlook2007选择发送帐号

    本文转载自:http://hi.baidu.com/vugwggogodaenqe/item/c95c6d019457a2d873e676ec outlook2007可以用程序选择发送帐号,其他的版本 ...

  10. MySQL 多表关联更新及删除

    目录: <MySQL中的两种临时表> <MySQL 多表关联更新及删除> <mysql查询优化之三:查询优化器提示(hint)> 一.      多表关联更新 问题 ...