JavaScript构造器是什么

在JavaScript中,构造器是一个当新建对象的内存被分配后,用来初始化该对象的一个特殊函数,对象构造器是被用来创建特殊类型的对象,在对象初次被创建时,通过接收参数,用来对成员的属性和方法进行赋值。

JavaScript构造器是什么

本教程操作环境:windows10系统、javascript1.8.5版、Dell G3电脑。

JavaScript构造器是什么

在面向对象编程中,构造器是一个当新建对象的内存被分配后,用来初始化该对象的一个特殊函数。在 JavaScript 中一切皆对象。 对象构造器是被用来创建特殊类型的对象,首先它要准备使用的对象,其次在对象初次被创建时,通过接收参数,用来对成员的属性和方法进行赋值。

对象创建

立即学习“Java免费学习笔记(深入)”;

创建对象的三种基本方式:

var newObject = {};// orvar newObject = Object.create( null );// orvar newObject = new Object();

登录后复制

在 Object 构造器为特定的值创建对象封装,或者没有传递值时,它将创建一个空对象并返回它。

将一个键值对赋给一个对象的四种方式:

// ECMAScript 3 兼容形式// 1. “点号”法// 设置属性newObject.someKey = "Hello World";// 获取属性var key = newObject.someKey;// 2. “方括号”法// 设置属性newObject["someKey"] = "Hello World";// 获取属性var key = newObject["someKey"];// ECMAScript 5 仅兼容性形式// For more information see: http://kangax.github.com/es5-compat-table/// 3. Object.defineProperty方式// 设置属性Object.defineProperty( newObject, "someKey", {    value: "for more control of the property's behavior",    writable: true,    enumerable: true,    configurable: true});// 如果上面的方式你感到难以阅读,可以简短的写成下面这样:var defineProp = function ( obj, key, value ){    var config = {        value    }  Object.defineProperty( obj, key, config );};// 为了使用它,我们要创建一个“person”对象var person = Object.create( null );// 用属性构造对象defineProp( person, "car",  "Delorean" );defineProp( person, "dateOfBirth", "1981" );defineProp( person, "hasBeard", false );// 还可以创建一个继承于Person的赛车司机var driver = Object.create( person );// 设置司机的属性defineProp(driver, "topSpeed", "100mph");// 获取继承的属性 (1981)console.log( driver.dateOfBirth );// 获取我们设置的属性 (100mph)console.log( driver.topSpeed );// 4. Object.defineProperties方式// 设置属性Object.defineProperties( newObject, {  "someKey": {     value: "Hello World",     writable: true   },  "anotherKey": {     value: "Foo bar",     writable: false   } });// 3和4中的读取属行可用1和2中的任意一种

登录后复制

基础构造器

正如我们先前所看到的,JavaScript 不支持类的概念,但它有一种与对象一起工作的构造器函数。使用 new 关键字来调用该函数,我们可以告诉 JavaScript 把这个函数当做一个构造器来用,它可以用自己所定义的成员来初始化一个对象。

在这个构造器内部,关键字 this 引用到刚被创建的对象。回到对象创建,一个基本的构造函数看起来像这样:

function Car( model, year, miles ) {  this.model = model;  this.year = year;  this.miles = miles;  this.toString = function () {    return this.model + " has done " + this.miles + " miles";  };}// 使用:// 我们可以实例化一个Carvar civic = new Car( "Honda Civic", 2009, 20000 );var mondeo = new Car( "Ford Mondeo", 2010, 5000 );// 打开浏览器控制台查看这些对象toString()方法的输出值console.log( civic.toString() );console.log( mondeo.toString() );

登录后复制

上述是个简单版本的构造器模式,但它有两个问题:

难以继承

每个 Car 构造函数创建的对象中,toString() 之类的函数都被重新定义

这不是非常好,理想的情况是所有 Car 类型的对象都应该引用同一个函数

使用“原型( prototype )”的构造器

在 JavaScript 中函数有一个 prototype 的属性。当我们调用 JavaScript 的构造器创建一个对象时,构造函数 prototype 上的属性对于所创建的对象来说都能被访问和调用

function Car( model, year, miles ) {  this.model = model;  this.year = year;  this.miles = miles;}// 注意这里我们使用 Object.prototype.newMethod 而不是 Object.prototype ,以避免我们重新定义原型对象Car.prototype.toString = function () {  return this.model + " has done " + this.miles + " miles";};// 使用:var civic = new Car( "Honda Civic", 2009, 20000 );var mondeo = new Car( "Ford Mondeo", 2010, 5000 );console.log( civic.toString() );console.log( mondeo.toString() );

登录后复制

通过上面代码,单个 toString() 实例被所有的 Car 对象所共享了。

相关推荐:javascript学习教程

以上就是JavaScript构造器是什么的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2939192.html

(0)
上一篇 2025年3月11日 21:32:03
下一篇 2025年3月2日 21:11:14

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • javascript语法基本要素是什么

    javascript语法基本要素是值、运算符、表达式、关键词和注释;javascript每条语句是以分号结束,如果一条语句占一行,可以不用写分号。 本文操作环境:Windows7系统、javascript1.8.5版、DELL G3电脑 J…

    2025年3月11日
    200
  • 什么是javascript函数库

    javascript函数库是指用于Javascript语言开发的库,多应用在网页DOM、AJAX、CSS的领域,可以帮助网页开发者用更快速地撰写网页,例如有些JavaScript库提供精简化的DOM操作函数或解决跨浏览器问题等。 本文操作环…

    2025年3月11日
    200
  • javascript表达式有哪些

    javascript表达式有:1、算术表达式;2、字符串表达式;3、主要表达;4、数组和对象初始化器表达式;5、逻辑表达式;6、左侧表达式;7、属性访问表达式;8、对象创建表达式;9、函数定义表达式;10、调用表达式等。 本文操作环境:Wi…

    2025年3月11日
    200
  • ajax是js吗

    ajax不是js。js全称JavaScript,是一种编程语言;而ajax不是编程语言,是基于javascript的一种用于创建快速动态网页的技术,是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。 本教程操作环境:window…

    2025年3月11日
    200
  • javascript怎样去掉class

    方法:1、利用“document.getElementsByTagName(“元素”)”语句获取需要去掉class的元素对象;2、利用“元素对象.removeAttribute(“class”…

    2025年3月11日
    200
  • javascript有val方法吗

    在JavaScript中有val()方法,该方法可以返回第一个匹配元素的value属性值,或者设置所有匹配元素的value属性值,语法为“$(selector).val()”或者“$(selector).val(value)”。 本教程操作…

    2025年3月11日
    200
  • javascript怎么求众数

    javascript求众数的方法:1、新建一个数组;2、把每个值出现的次数都统计起来;3、遍历这个数组,找到众数即可。 本文操作环境:Windows7系统、javascript1.8.5版、DELL G3电脑 javascript怎么求众数…

    2025年3月11日
    200
  • json属于JavaScript吗

    json是属于JavaScript的,json是JS对象的字符串表示法,使用文本表示一个JS对象的信息,是一种轻量级的数据交换格式,json格式在语法上与创建js对象代码是相同的,json语法是JS对象字面量表示法语法的一个子集。 本教程操…

    2025年3月11日
    200
  • JavaScript事件是指什么

    JavaScript事件是指在文档或者浏览器中发生的一些特定交互瞬间,比如打开某一个网页,浏览器加载完成后会触发load事件,当鼠标悬浮于某一个元素上时会触发hover事件,当鼠标点击某一个元素时会触发click事件等等。 本文操作环境:W…

    2025年3月11日 编程技术
    200
  • jsp和javascript之间啥关系

    jsp和javascript之间没有关系;jsp的全称是“Java Server Pages”,是一种动态网页开发技术,主要用于实现Java web应用程序的用户界面部分,而JavaScript是一种具有函数优先的轻量级编程语言。 本教程操…

    2025年3月11日
    200

发表回复

登录后才能评论