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中定义了类 ...
随机推荐
- python的常用内建模块与常用第三方模块
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,如有问题请及时联系我们以作处理 一.常用内置模块1.datetimePython 提供了一个 time 和 calendar 模块可 ...
- 区块链从零开始做开发(0):hyperledger Fabric2.3安装
一.前言 各位看官好,这是本人第一篇技术博客. 写博客的契机是因为原来配的环境在虚拟机扩容后莫名奇妙崩了(具体情况我以后会写),为了以后的自己特此从头开始记录.以前都是作为一个读者,这次终于有机会能够 ...
- 服务器运行jupyter,本地浏览器打开
https://www.cnblogs.com/wwwhza/p/8821117.html https://blog.csdn.net/qq_29762941/article/details/8063 ...
- C# 使用 log4net 日志组件
一. 什么是 log4net Apache log4net 库是帮助程序员将日志语句输出到各种输出目标的工具,它是从Java中的Log4j迁移过来的一个.Net版的开源日志框架.log4net 的一 ...
- 关于Maven项目pom.xml文件不报错却有红叉的问题
原因:spring-boot,升级到2.1.5版本,而maven-jar-plugin.version插件默认版本不兼容所以报错,但不影响运行 解决:在<properties></p ...
- 2.2.2 Sqoop2 基本架构
主要组件 1.Sqoop Client 定义了用户使用Sqoop的方式,包括客户端命令行CLI和浏览器两种方式,浏览器允许用户直接通过Http方式完成Sqoop的管理和数据的导出 2.Sqoop Se ...
- 为什么 StringBuffer 有 toStringCache 而 StringBuilder 没有?
对于 StringBuilder 和 StringBuffer 的源码会发现,StringBuffer 中有一个叫 toStringCache 的成员变量,用来缓存 toString() 方法返回字符 ...
- vue 深度作用选择器
使用 scoped 后,父组件的样式将不会渗透到子组件中 如果想在使用scoped,不污染全局的情况下,依然可以修改子组件样式,可以使用深度作用选择器 .tree{ width: 100%; floa ...
- Linux 中软链接和硬链接的使用
Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link). 硬链接和软链接 硬链接 --- ln 要链接的文件 新硬链接名 软连接 --- l ...
- CTFshow-萌新赛逆向_flag白给
查看题目信息 下载后得到一个flag.exe文件,进行测试 使用PEiD查壳 发现一个upx的壳 使用命令进行解壳 upx -d 拿到一个无壳的程序 放进OD打开,查找关键词 发现信息 成功拿到序列号 ...