javascript对象初探(一)--- 构造器函数

们可以通过构造器函数(简称构造函数)来创建对象:

function Her(){
    this.child = ‘Jon‘;
}

为了使用该函数来创建对象,我们需要使用new操作符,例如:

var she = new Hew();
she.child; // Jon

使用构造函数创建对象的好处就是她可以接受一些参数,下面我们就来修改一下上面的例子:

function Her(name){
    this.name = name;
    this.child = ‘Jon;
    this.whoAreYou = function(){
        return ‘I am‘ + this.name + ‘My child is‘ + this.child;
    }
}

现在,我们就能利用同一个构造函数创建不同的对象了:

var her1 = new Her(‘A‘);
var her2 = new Her(‘B‘);

按照惯例,我们应该将构造函数的首字母大写,以便区分一般函数。

如果我们在调用一个构造函数的时候忽略了new操作符,尽管代码不会出错但她的运行结果往往会出人意料!

var a = Her(‘A‘);
console.log(typeof a);  // undefined

由于我们没有使用new操作符,那我们就不是在创建一个新的对象。这个函数调用与其它函数并没有神马区别,这里的a就应该是函数的返回值,由于Her()函数没有显式的返回值(return关键字返回),所以说便隐式的返回了undefined,并将该值赋给了a。

那么这时候的this指向的是谁呢?答案是window.

当我们创造对象的时候,实际上同时也赋予了该对象的一种特殊的属性---即构造器属性(constructor prototype)。该属性实际上是一个指向用于创建该对象的构造器函数的引用。

function Her(){
   this.name = ‘Anna‘;
}
var she = new Her();
cosole.log(she.constructor);
// function Her(){
//    this.name = ‘Anna‘;
//}

当然,由于构造器函数引用的是一个函数,因此我们可以利用她来创建另一个新对象:

var her2 = new Her.constructor()

大意就是:‘无论对象her2有没有被创建,我们都可以用她来创建另一个对象’。

另外,如果对象是通过‘{}’这种方式被创建的,那么实际上她就是由内建函数Object()函数所创建的:

var o = {};
console.log(o.constructor);
//function Object(){}
console.log(typeof o.constructor)
// function

instanceof 操作符

可以测试某个对象是不是由某个指定的构造函数创建的。

function Hero(){};
var h = new hero();
var o = {};
cosole.log(h instanceof Hero) //true

请注意,这里的函数名Hero后面没有加(),因为这是函数的引用而不是调用。

时间: 2024-08-01 20:22:25

javascript对象初探(一)--- 构造器函数的相关文章

javascript 对象初探 (四)--- 内建对象Array

 我们不要去纠结神马是内建对象,神马是內建构造器.到后来你们便会发现其实她们都是对象. Array()是一个构建数组的內建构造器函数: var arr = new Array(); 与下面的是等效的: var arr = []; //数组文本表识法 无论数组是以神马方式创建的,我们都可以照常向里面添加元素. arr[0] = 1; arr[1] = 2; console.log(arr) // [1, 2] 当我们使用构造器函数Array()创建数组时,也可以通过传值的方式为其添加元素: var

javascript 对象初探 (三)--- 传递/比较对象

传递对象 当我们拷贝某个对象或者将对象传递给某个函数时,往往传递的都是该对象的引用.因此我们在该对象的引用上做任何改动,实际上都会影响到引用的原对象. var she = {num:1}; var her = she; her.num; // 1 her.num = 100; she.num; // 100 同样的将对象传递给函数也是一样的: var she = {num:1}; var her = function(o){o.num=100}; her(she); she.num = 100;

javascript 对象初探(二)--- 返回对象的函数

除了使用new操作符调用构造函数以外,我们也可以抛开new操作符,只用一般函数来创建对象,这样就能执行某些预备工作,并已对象为返回值的函数.. function her(){ return { name : 'Jon' }; } 然后我们调用her()来生成对象: var a = her(); a.name; // Jonconsole.log(a.constructor);// function Object(){} 实际上构造函数也是可以返回对象的,只不过this的值使用上将会有所不同. f

javascript 对象初探 (六)--- call()和apply()初探

在javascript中,每个函数都具有call()和apply()两个方法,您可以用她们来触发函数,并指定相关的调用参数. 此外,这两个方法还有另一个功能,就是她可以让一个对象去‘借用‘另一个对象的方法,并为己用.这也是一种简单的代码重用. function her = { name : 'Anna', say:function(a){ return 'Hello'+a+'I am'+this.name+'!' } } 这样一来我们就能调用her对象的say方法. her.say(Jon);

javascript——对象的概念——创建对象

一.创建对象 1.创建空对象 方式一: var o ={};o; //Object {} typeof(o); //"object" 方式二: var o=new Object();o;//Object {} typeof(o);//"object" 2.创建非空对象 在 javascript 中创建对象有两种方式:对象文本标记法.构造器函数定义对象: 方式一:对象文本标记法: 先上例子: 1 var hero= { 2 name:'小明', 3 Sex:'男',

js--使用构造器函数来新建对象及操作

通过new操作符来调用函数,来达到访问对象this值得目的,构造器将其创建的对象返回给我们. 直接上代码 //创建构造器函数 function Gadget(name, color){ this.name = name ;//添加属性 this.color = color ; this.whatAreYou = function(){//添加方法 return this.color + " " + this.name ; } } //另一种添加属性和方法,通过构造器函数的prototy

JavaScript对象、函数(你不知道的JavaScript)

一.对象 var obj = {}; obj[true] = "foo"; obj[3] = "bar"; obj[obj] = "baz"; obj["true"]; obj["3"]; obj["[object Object]"]; 二.数组也是对象 var ary = ["foo", 42, "bar"]; ary.baz = "b

JavaScript中的Function(函数)对象

1.document.write(""); 输出语句 2.JS中的注释为// 3.传统的HTML文档顺序是:document->html->(head,body) 4.一个浏览器窗口中的DOM顺序是:window->(navigator,screen,history,location,document) 5.得到表单中元素的名称和值:document.getElementById("表单中元素的ID号").name(或value) 6.一个小写转大

第三节(JavaScript 对象、函数)

JavaScript 中的所有事物都是对象:字符串.数字.数组.日期,等 在 JavaScript 中,对象是拥有属性和方法的数据 属性和方法 (属性是与对象相关的值.方法是能够在对象上执行的动作) 例: 学生 student student属性: student.name = 美女; student.age = 18 ; student.sex = 女 ; student.isMarry = true ; student的方法: student.eat() // 吃饭 student.slee