如何在JavaScript中挽救对象的未定义属性?
How can I rescue an undefined property of an object in JavaScript?
好的,假设你有两个对象:greg
和stacy
。他们都是人。Greg的对象是这样的:
var greg = {
name: "Greg",
job: "doctor",
age: 45
}
和Stacy是这样的:
var stacy = {
name: "Stacy",
age: 42
}
当有人试图访问Stacy的job
属性时,我怎么能在不直接将其作为job
的情况下返回"失业"?我想要一个不使用原型的解决方案,而且我真的宁愿不使用函数来访问对象的所有属性。
仅供参考:我将此用于Ajax自动加载系统,类似于Rails的服务器端系统。
我会使用这样的代码…使用默认值的构造函数:
function Person(cfg) {
this.name = cfg.name || "John Q. Public";
this.job = cfg.job || "Unemployed";
// EDIT: This will allow for an age of '0' -- a newborn.
this.age = typeof cfg.age === undefined ? null : cfg.age;
}
var greg = new Person({
name: "Greg",
job: "doctor",
age: 45
});
var stacy = new Person({
name: "Stacy",
age: 42
});
console.log(stacy.job);
在提取属性时使用||
指定默认值
var job = person.job || "Unemployed";
然而,这必须在你得到工作的每个地方完成。如果你不想在所有地方重复它,你需要使用一个函数或原型。
可以使用typeof:
进行显式检查if (typeof obj.job === "undefined") { ..
或更简单:
console.log(obj.job || "Unemployed")
架构错误!
function Person(name, job, age) {
this.name = name ? name : "no name";
this.job = job ? job : "no job";
this.age = age ? age : -1:
}
var greg = new Person("Greg", "doctor", 45);
var stacy = new Person("Stacy", null, 42);
console.log(stacy.job);
或者你打算为每个人写一个自己的静态类? 相关文章:
- 在CoffeeScript文件上运行Jasmine测试时,对象未定义错误
- JavaScript 对象 - 未定义的数字键文字
- 为什么页面方法对象未定义
- JavaScript对象表示嵌套对象未定义
- Javascript类构造的对象未定义
- JQuery TypeError:对象未定义(length=object.length,)
- 用于从许多带有“for”循环的URL中获取HTML信息的X射线使对象未定义
- 如何避免收到一条消息,指出对象未定义
- JavaScript 对象未定义
- JavaScript 对象未定义它是否在几年前工作
- 揭示模块模式:对象未定义
- 对象未定义/HTML使用jQuery输出
- 为什么子 html 对象未定义/空
- 提取 JSON 对象未定义
- 为什么这个带有最简单的构造函数的 javascript 对象未定义
- “对象”未定义日历.js
- 对象未定义到模块中,Nodejs javascript
- javascript对象未定义
- Twilio响应对象未定义,但没有错误
- 为什么"对象未定义”;在这种情况下没有抛出错误