面向对象object与constructor
什么是constructor属性?它来自哪里?又将会指向何处?
function myfile(name,age){
this.webname = name;
this.age = age;
}
myfile.prototype.getname = function () {
return this.age;
}
var myfile1 = new myfile("zhang",3);
console.info(myfile1.constructor);
console.info(myfile.constructor);
console.info(myfile.prototype.constructor);
这里我打印了在3种不同情况下所输出的constructor构造函数属性的内容,我将谷歌浏览器控制台打印出的结果截图如下:

是的正如我们看见的为什么console.info(myfile1.constructor);打印出的结果与console.info(myfile.prototype.constructor);打印出的结果会是一样的,而console.info(myfile.constructor);打印出的结果却是ƒ
Function() { [native code] },其实这个很好理解,如果你看了我的上一章讲解的javascript面向对象——prototype属性(原型属性)那么我相信这个地方就会很容易理解,其实我们首先要清楚constructor构造函数属性,它是谁的属性?它是原型属性prototype所指向的那个对象的属性。那么在这个对象中这个属性它又指向谁呢!?它指向的是构造函数也就是上面代码中的function
myfile(name,age){this.webname = name; this.age = age;}这一部分,其值就是这个构造函数中的对象。
那么肯定会有人疑问,既然
constructor构造函数属性 指向的是是构造函数,那么打印出的结果是构造函数这个可以理解但是为什么console.info(myfile.prototype.constructor);打印的也是构造函数呢!?它指向的可不是构造函数,是的我们知道实例化对象指向的一直都是prototype原型属性所指向的对象。如果想解决这个问题,那么我们首先应该弄明白两个问题。
1、实例化对象到底指向的是谁?
2、实例化对象到底继承的是谁?
首先我们还是用一个实例来引入,用图片看结果然后在总结:
代码部分:
function myfile(name,age){
this.webname = name;
this.age = age;
}
myfile.prototype.getname = function () {
return this.age;
}
var myfile1 = new myfile("zhang",3);
console.info(myfile1.constructor);
总结:代码执行的结果在控制台上显示的内容如上图,打印出的是构造函数的代码也就是代码部分
function myfile(name,age){
this.webname = name;
this.age = age;
}
的的内容,有人肯定会想,哎!!!这不很明显嘛,实例化对象指向的就是构造函数啊!继承的也是构造函数。
那么我们来运行另外一句代码:console.info(myfile1.getname());打印出的结果却是3。
= function () {return this.age;}这个时候原型属性所指向的对象不仅包含了构造函数还包含了通过原型属性所创建出来的一些属性。
2、实例化对象到底继承的是谁?
ƒ Function() { [native code] } 。
Function() { [native code] } 就更好理解了,native code
的意思就是 本机代码 其实意思就是告诉我们,我们所执行的console.info(myfile.constructor);代码就是构造函数它自己本身,不能所执行这条代码会报错,只是控制台会更智能一些的告诉我们,我们需要打印的就是它自己而已。
---------------------
作者:待归魔帝
来源:CSDN
原文:https://blog.csdn.net/zhj145236/article/details/77477057
版权声明:本文为博主原创文章,转载请附上博文链接!
面向对象object与constructor的更多相关文章
- 理解JAVA - 面向对象(object) - 属性,方法
理解JAVA - 面向对象(object) - 属性,方法 多态的体现: 向上造型,父类接收子类对象:向上造型: 从父类角度看不到子类独有的方法:面向对象,人类认知世界的方式:生活中每天都 ...
- Java - 面向对象(object oriented)计划 详细解释
面向对象(object oriented)计划 详细解释 本文地址: http://blog.csdn.net/caroline_wendy/article/details/24058107 程序包括 ...
- Java面向对象 Object类 内部类
Java面向对象 Object类 内部类 知识概要: 一:Object类 二:内部类 匿名内部类的写法 1.Object O ...
- ABAP 面向对象(Object Orientation) OO
[转自 http://blog.sina.com.cn/s/blog_7c7b16000101bhof.html]在程序中, 对象的识别和寻址是通过对象引用来实现的, 对象引用变量可以访问对象的属性和 ...
- Object.prototype.constructor
Returns a reference to the Object function that created the instance's prototype. 注意这个属性的值是函数本省的引用,而 ...
- 面向对象-Object类
一.Object类中的equals()方法 equals(Object obj) :指示其它某个对象是否与此对象"相等". 返回值类型是boolean Oblect类中的equal ...
- php面向对象Object
1.创建类 class 类名{ private 私有变量 只能本类的内部使用 protected 受保护的变量 本类和子类的内部 public 公开的变量 都可以使用 一般属性都设为私有 一般函数都是 ...
- The comparison between object and constructor
1.相似的地方 1.举个栗子:public struct Student{ string name; int age;}public class bike{ int weight; ...
- Js中Prototype、__proto__、Constructor、Object、Function关系介绍
一. Prototype.__proto__与Object.Function关系介绍 Function.Object:都是Js自带的函数对象.prototype,每一个函数对象都有一个显式的proto ...
随机推荐
- php7安装 event扩展
1 下载地址:http://pecl.php.net/package/event 2 安装支持库libevent,需要编译高版本(这里以最新版本release-2.1.8-stable为例) http ...
- JS之event flow
DOM事件流 1.定义: DOM(文档对象模型)结构是一个树型结构,当一个HTML元素产生一个事件时,该事件会在元素节点与根结点之间的路径传播,路径所经过的结点都会收到该事件,这个传播过程可称为DOM ...
- day40-python多进程多线程-多线程实例和锁
多线程 线程是应用程序中工作的最小单元. 多线程是现实有两种方式:方法一:将要执行的方法作为参数传给Thread的构造方法(和多进程类似)t = threading.Thread(target=act ...
- jvm-垃圾收集
概述 说起垃圾收集,大部分人都把这项技术当做Java语言的伴生产物.其实,GC主要就是考虑完成三件事情: 哪些内存需要回收 什么时候回收 如何回收. 经过半个多世纪的发展,目前内存的动态分配与内存的回 ...
- Android : 关于HTTPS、TLS/SSL认证以及客户端证书导入方法
一.HTTPS 简介 HTTPS 全称 HTTP over TLS/SSL(TLS就是SSL的新版本3.1).TLS/SSL是在传输层上层的协议,应用层的下层,作为一个安全层而存在,翻译过来一般叫做传 ...
- python笔记16-函数
函数说白了,就是把一组代码合到一起,可以实现某种功能,需要再用到这个功能的话,直接调用这个函数就行了 1.定义函数def def my_open():#函数名,def定义函数,my_open给这个函数 ...
- Android开发 ---多线程操作:Handler对象,消息队列,异步任务下载
效果图: 1.activity_main.xml 描述:定义了六个按钮 <?xml version="1.0" encoding="utf-8"?> ...
- Java语法基础学习DayTen(集合续)
一.集合 1.Set:存储的元素是无序的.不可重复的 (1)无序性:无序性不等于随机性,无序指的是元素在底层存储的位置是无序的. (2)不可重复性:当向Set中添加相同的元素时,后添加的元素不能添加进 ...
- springcloud Ribbon学习笔记一
上篇已经介绍了如何开发eureka服务并让多个服务进行相互注册,接下来记录如何开发一个服务然后注册到eureka中并能通过ribbon成功被调用 开发一个用户服务并注册到eureka中,用户服务负责访 ...
- 利用教育邮箱注册JetBrains产品(pycharm、idea等)的方法
转载:http://www.cnblogs.com/wang-meng/p/8887436.html 1,申请邮箱 地址为:http://mdu.edu.rs/ 邮箱的前缀可以改成自己喜欢的字符 ...