当前位置: 首页 > news >正文

广州有哪些软件开发公司博客seo怎么做

广州有哪些软件开发公司,博客seo怎么做,怎么用ip地址做网站,做外贸网站需要注意些什么手续在理解了对象模型后,我们就可以看一下constructor属性是如何实现的. constructor是什么 简单的理解,constructor指的就是对象的构造函数。请看如下示例: function Foo(){}; var foo new Foo(); alert(foo.constructor);//Foo alert(Foo.constructor);//Function al…

在理解了'对象模型'后,我们就可以看一下constructor属性是如何实现的.

constructor是什么

简单的理解,constructor指的就是对象的构造函数。请看如下示例:

function Foo(){};
var foo = new Foo();
alert(foo.constructor);//Foo
alert(Foo.constructor);//Function
alert(Object.constructor);//Function
alert(Function.constructor);//Function

对于foo.constructor为Foo,我想应该很好理解,因为foo的构造函数为Foo。对于Foo、Object、Function的构造函数为Function,我想也没什么好争议的。(因为Foo,Object,Function都是函数对象,又因为所有的函数对象都是Function这个函数对象构造出来,所以它们的constructor为Function,详细请参考《js_函数对象》)

 

Prototype与Constructor的关系

function Dog(){}
alert(Dog === Dog.prototype.constructor);//true

在 JavaScript 中,每个函数都有名为“prototype”的属性,用于引用原型对象。此原型对象又有名为“constructor”的属性,它反过来引用函数本身。这是一种循环引用,如图:

 

constructor属性来自何方

我们来看一下Function构造String的构造过程:

 

注:Function构造任何函数对象的过程都是一样的,所以说不管是String,Boolean,Number等内置对象,还是用户自定义对象,其构造过程都和上图一样。这里String只是一个代表而矣!

图中可以看出constructor是Function在创建函数对象时产生的,也正如'prototype与constructor的关系'中讲的那样,constructor是函数对象prototype链中的一个属性。即String=== String.prototype.constructor。

 

我还想用一段代码来证明一下,理论是正确的:

function Person(){}
var p = new Person();
alert(p.constructor);//Person
alert(Person.prototype.constructor);//Person
alert(Person.prototype.hasOwnProperty('constructor'));//truealert(Person.prototype.isPrototypeOf(p));//true
alert(Object.prototype.isPrototypeOf(p));//true
alert(Person.prototype == Object.prototype);//false

到现在,你会发现这和前面《原型链的实现原理》中的默认prototype指向Object.prototype有冲突,显然当时的理论不是很全面。

 

特别的Object

用心的读者可能会提出这样一问题,你这一套理论并不能适用于Object。因为以下的代码和你上面的理论是冲突的:

alert(Object.prototype.hasOwnProperty('constructor'));//true
alert(Object.prototype.hasOwnProperty('isPrototypeOf'));//true,如果按上面的理论,这里应该返回false

真的是这样吗?不是!那我们来看一下特殊的Object是如何处理的:

你会发现,这图的原理和上面一张图的原理是一样的。这就能正确解释Object.prototype.hasOwnProperty('isPrototypeOf')为true!

 

constructor探究

function Animal(){}function Person(){}var person = new Person();
alert(person.constructor); //Person

根据上一节的内容,你能正确的理解这段代码的结果吗?思考后,看一下其内存表示:

 

这张图明确有表明了Function构造Animal和Person的过程。同时也显示了实例person与Person的关系。

 

再深入一点,代码如下:

function Animal(){}
function Person(){}Person.prototype = new Animal();var person = new Person();
alert(person.constructor); //Animal

这个时候,person的构造函数成了Animal,怎么解释?

 

注:图中的虚线表示Person默认的prototype指向(只作参考的作用)。但是我们将Person.prototype指向了new Animal。

此时,Person的prototype指向的是Animal的实例,所以person的constructor为Animal这个构造函数。

 

结论:constructor的原理非常简单,就是在对象的原型链上寻找constructor属性。

 

注:如果你无法正确理解本文内容,请回顾前面章节的内容。

 

 

转载于:https://www.cnblogs.com/fool/archive/2010/10/16/1853126.html

http://www.lbrq.cn/news/2773387.html

相关文章:

  • 如何做网站流量百度关键词推广怎么收费
  • 做网站用php吗湖南正规seo优化
  • 东莞vi设计公司排名什么叫优化
  • wordpress音乐页面下载文件seo搜索引擎优化师
  • 泰兴网站建设开发大数据营销软件
  • wordpress最新更新列表页面朝阳网站seo
  • 网站正在建设中 html源码福州关键词搜索排名
  • 给别人做网站被诉侵权免费营销培训
  • 营销型网站建设模板网上销售渠道
  • 小x导航正品网站推广及seo方案
  • 深圳做网站的公司的区域成都百度seo优化公司
  • 高端的网站制作百度投放
  • 北京小型网站建设东莞关键字排名优化
  • 哪个网站能在百度做推广手机优化软件下载
  • 做电影资源网站违法吗外汇seo公司
  • sem算网站设计吗百度关键词刷排名教程
  • 做网站机构图用什么工具百度搜索风云榜
  • 做seo对网站推广有什么作用新东方在线教育平台官网
  • php学校网站系统英文谷歌seo
  • 网站全景看图怎么做seo专员是做什么的
  • 北京 网站建设 京icpseo自然优化排名技巧
  • 电子商务网站建设规划心得企业关键词排名优化网址
  • 镇江网站建设包括哪些seo服务合同
  • 珠海建站模板源码正在播网球比赛直播
  • 做360手机网站快网站推广软文范例
  • 做环保是跑还是网站卖大连网站优化
  • 给几个手机网站软件开发需要学什么
  • 网站布局怎么做市场营销策划方案3000字
  • 下载做ppt的动画片的好网站苹果aso优化
  • 如东做网站网站建设平台有哪些
  • 哈希:两数之和
  • 35岁对工作的一些感悟
  • OpenSSL与OpenSSH的关系
  • SpringBoot-集成POI和EasyExecl
  • AJAX (一)
  • 技术分享:跨域问题的由来与解决