您的位置:首页 > Web前端 > JavaScript

JavaScript 面向对象

2015-10-18 20:39 567 查看
1.通过函数创建类

case 1 : new function_name();

var t1 = 'ttt';
function aaa()
{
this.t1 = '222';
}
var a = new aaa();
console.log(t1); //ttt


case 2:function_name(); 如果忘记了new会怎么样呢?

当程序的宿主环境是Web浏览器时,它所提供的全局对象就是window。

aaa没有被任何对象调用,则函数中this就是window了

var t1 = 'ttt';//加不加这行,不影响结果
function aaa()
{
this.t1 = '222'; //改变全局变量,这时候的this为全局
}
var a = aaa();
console.log(t1); //222
//和console.log(window.t1)等价


case3:函数的返回值

在这里其实和case1一样,会创建aaa函数的对象,因此不会改变全局t1的值,但是aaa有return,返回了一个新的对象。如果aaa没有return,new方法默认的返回为this

var t1 = 'ttt';
function aaa()
{
this.t1 = '222';
return {
b:2
};
}
var a = new aaa();
console.log(t1); //ttt


2.对于每个对象都会默认被加上constructor属性

case1:带参构造函数

var t1 = 'ttt';
function aaa(name)
{
this.t1 = name;
}
var a = new aaa('222');
console.log(a.constructor); //aaa(name)


case2:无参构造函数

var aaa={}
console.log(a.constructor); //Object(),通过json方式创建的,构造函数都是Object()


3.arguments

case1:作为函数的参数列表数组

function f()
{
return arguments;
}
console.log(f(1,2,3));//[1,2,3]


case2:arguments.callee 返回函数本身,做匿名函数的递归时有用

(function(count)
{
if(count<5)
{
alert(count);
arguments.callee(++count);
}
})(1);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: