javascript 构造函数内return 解析
2015-09-07 20:28
543 查看
首先我们都知道js中构造函数一般应该是这样的
function Super (a) {
this.a = a;
return {a: 2};
}
Super.prototype.sayHello = function() {
alert('hello world');
}
new 这个构造函数会返回什么?
Object {a: 2}
为什么会这样?我们的构造函数和原型上的方法呢?别急 我们再来 列出集中情况
//直接 return
function A(){
return;
}
//返回 数字类型
function B(){
return 123;
}
//返回 string类型
function C(){
return "abcdef";
}
//返回 数组
function D(){
return ["aaa", "bbb"];
}
//返回 对象
function E(){
return {a: 2};
}
//返回 包装类型
function F(){
return new Number(123);
}
结果分别是
我们可以看出 return 基本类型 会返回一个空对象
而返回对象类型 则会返回这对象
与我们常用的那个构造函数相结合
function Super (a) {
this.a = a;
return 123;
}
Super.prototype.sayHello = function() {
alert('hello world');
}
function Super_ (a) {
this.a = a;
return {a: 2};
}
Super_.prototype.sayHello = function() {
alert('hello world');
}
分别new Super(1); new Super_(1);
结果是
Super {a: 1} 具有原型方法sayHello
Object {a: 2}
好了现在我们总结下 在构造函数中 return 基本类型 不会影响
构造函数的值而 return 对象类型 则会替代构造函数返回该对象
function Super (a) { this.a = a; } Super.prototype.sayHello = function() { alert('hello world'); }但如果在构造函数中 加入 return 会是什么结果呢
function Super (a) {
this.a = a;
return {a: 2};
}
Super.prototype.sayHello = function() {
alert('hello world');
}
new 这个构造函数会返回什么?
Object {a: 2}
为什么会这样?我们的构造函数和原型上的方法呢?别急 我们再来 列出集中情况
//直接 return
function A(){
return;
}
//返回 数字类型
function B(){
return 123;
}
//返回 string类型
function C(){
return "abcdef";
}
//返回 数组
function D(){
return ["aaa", "bbb"];
}
//返回 对象
function E(){
return {a: 2};
}
//返回 包装类型
function F(){
return new Number(123);
}
结果分别是
A {} B {} C {} ["aaa", "bbb"] Object {a: 2} Number {[[PrimitiveValue]]: 123} A {}
我们可以看出 return 基本类型 会返回一个空对象
而返回对象类型 则会返回这对象
与我们常用的那个构造函数相结合
function Super (a) {
this.a = a;
return 123;
}
Super.prototype.sayHello = function() {
alert('hello world');
}
function Super_ (a) {
this.a = a;
return {a: 2};
}
Super_.prototype.sayHello = function() {
alert('hello world');
}
分别new Super(1); new Super_(1);
结果是
Super {a: 1} 具有原型方法sayHello
Object {a: 2}
好了现在我们总结下 在构造函数中 return 基本类型 不会影响
构造函数的值而 return 对象类型 则会替代构造函数返回该对象
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- Extjs4.0 最新最全视频教程
- Javascript中toFixed方法的改进
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 5个常见可用性错误和解决方案
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- JavaScript拆分字符串时产生空字符的原因
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- js可突破windows弹退效果代码
- JSP脚本漏洞面面观
- PowerShell中执行Javascript的方法示例