JavaScript 面向对象
2015-10-18 20:39
567 查看
1.通过函数创建类
case 1 : new function_name();
case 2:function_name(); 如果忘记了new会怎么样呢?
当程序的宿主环境是Web浏览器时,它所提供的全局对象就是window。
aaa没有被任何对象调用,则函数中this就是window了
case3:函数的返回值
在这里其实和case1一样,会创建aaa函数的对象,因此不会改变全局t1的值,但是aaa有return,返回了一个新的对象。如果aaa没有return,new方法默认的返回为this
2.对于每个对象都会默认被加上constructor属性
case1:带参构造函数
case2:无参构造函数
3.arguments
case1:作为函数的参数列表数组
case2:arguments.callee 返回函数本身,做匿名函数的递归时有用
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);
相关文章推荐
- jsp中的js代码调用EL表达式
- Javascript(函数)
- VS中关于JS的调试
- JS基础
- Ajax使用的四大步骤
- JavaScript(五) hasOwnProtype原型链 过滤
- 组合模式
- [Javascript] Querying an Immutable.js Map()
- servlet中filter的的异步问题以及JSP与servlet配合时filter的注意
- js闭包
- javascript于boolean类型转换,运营商&&和|| 返回值
- [Javascript] Modifying an Immutable.js Map()
- 服务器和前台采用JSON通讯
- javascript函数
- JSON数据解析(转)
- js输出console
- HTML / JavaScript / PHP 实现页面跳转的几种方式
- 一点用JS写控制权限的心得
- [LeetCode][JavaScript]Remove Duplicates from Sorted Array
- [LeetCode][JavaScript]Remove Duplicates from Sorted Array II