在我正在制作的文本冒险中,房间的对象文字如下所示:
room : {
// some info,
exits : {
north : -1,
east : "house",
south : "forest",
west : -1
}
}
Run Code Online (Sandbox Code Playgroud)
在我的功能中移动它说:
if (room["exits"][direction] !== -1) {// go that way}
else {print "you can't go that way!"}
Run Code Online (Sandbox Code Playgroud)
现在我想通过测试相关方向的键是否存在于对象中来节省空间。所以文字会去:
room : {
// some info,
exits : {
east : "house",
south : "forest"
}
}
Run Code Online (Sandbox Code Playgroud)
……我的if陈述应该是什么样的?确定给定键名是否存在于对象中的“正确”方法是什么?
我正在尝试构建一个JavaScript对象文字的c#近似值,以传递给asp.net MVC中的视图模型:
var obj = new dynamic[]{
new { name: "Id", index: "Id", width: 40, align: "left" },
new { name: "Votes", index: "Votes", width: 40, align: "left" },
new { name: "Title", index: "Title", width: 200, align: "left"}
};
Run Code Online (Sandbox Code Playgroud)
编译器抛出:
"An anonymous type cannot have multiple properties with the same name"
Run Code Online (Sandbox Code Playgroud)
在黑暗中刺戳我猜它无法区分哪个属性与哪个匿名对象,我看到使用LINQ的类似错误.
有没有更好的方法来完成我想要做的事情?
编辑:这是在VisualStudio 2010和.net Framework 4中.Bala R的答案似乎解决了以前版本的问题.
在对象文字中使用 getter 和 setter 时,我看不到在 Typescript 中访问外部“this”范围的简单方法。考虑以下:
class Report {
stuff: any[];
options = {
length: 10,
get maxLength() { return REPORT.stuff.length }
}
}
Run Code Online (Sandbox Code Playgroud)
whereREPORT想成为Report对象实例的引用。我意识到我可以通过在构造函数中设置选项并使用 avar REPORT = this或类似的来解决这个问题,但似乎不雅。有没有办法更干净地做到这一点?
我有一个对象文字router,包含一个 ajax 调用。我想this.printMovies()在ajax调用中调用其他函数但this引用ajax对象。
我如何转义它并this引用router对象本身?
var router = {
//...
init : function() {
this.getData("api/movies", "movies", callback);
},
getData : function (url, htmlType, callback) {
$.ajax({
url: url,
dataType: 'json',
success: function (response) {
if (response && response.length > 0) {
this.printMovies(response, callback); //'this' refers to ajax
this.printMovies(response, callback).bind(this) //still doesn't work
}
},
error: function (response) { console.log("Error:" + response); }
});
},
printMovies : function(){
},
}
Run Code Online (Sandbox Code Playgroud) 我想在表达定义的每个单词周围加上引号.所有单词必须通过尾随冒号来完成.
例如:
def1: "some explanation"
def2: "other explanation"
Run Code Online (Sandbox Code Playgroud)
必须转变为
"def1": "some explanation"
"def2": "other explanation"
Run Code Online (Sandbox Code Playgroud)
如何用PHP中的preg_replace编写这个?
我有这个:
preg_replace('/\b:/i', '"$0"', 'def1: "some explanation"')
Run Code Online (Sandbox Code Playgroud)
但它只引用冒号,而不是单词:
key":" "value"
Run Code Online (Sandbox Code Playgroud) 我想用不包含该类中所有元素但其元素在该类中的对象文字初始化一个类的实例。
class ATest{
aStr:string;
aNum:number;
result(){return this.aStr + this.aNum;}
}
let test=new ATest;
test={aStr:"hello",aNum:12}; // error, result() is missing in the object literal
Run Code Online (Sandbox Code Playgroud)
利用ts的大部分验证进行分配的方式是什么?
test=Object.assign(test,{aStr:"hello",aNom:12});
Run Code Online (Sandbox Code Playgroud)
可以,但是您错过了输入字段的验证-请参阅aNom错了,但可以进入
根据 2019 Chrome Dev Summit 视频“使用 JSON.parse 实现更快的应用程序”,使用JSON.parse字符串文字而不是通过对象文字声明 json 会显着提高速度。谷歌JSON.parse 基准测试显示了两者之间的主要区别。
//JS object literal
const data = { foo: 42, bar: 1337 }; //
//JSON.parse 20%+ faster
const data = JSON.parse('{"foo":42,"bar":1337}'); //
Run Code Online (Sandbox Code Playgroud)
在 javascript 中声明 json 时,使用JSON.parse对象字面量有什么缺点吗?应该始终使用 json 声明JSON.parse?
我已经看过对象文字示例,它们看起来非常好看且合理.我想知道的是,是否可以在多个文件上使用对象文字,因为我看到的所有示例都只有1个文件.
谢谢.
我有一个像这样的对象文字:
var test = {
one: function() {
},
two: function() {
this.one(); // call 1
test.one(); // call 2
}
};
Run Code Online (Sandbox Code Playgroud)
two函数中的调用之间有什么区别(使用对象文字名称和使用对象this)?
为了编写更简洁的代码,我决定学习一些设计模式。我真的很喜欢对象文字模块模式,但是我有点麻烦。我已经用意大利细面条代码创建了一个灯箱,但无法将其转换为对象文字模式。
var $overlay = $("<div class='lightbox'></div>");
var $img = $("<img>");
var $caption = $("<p class='caption'></p>");
$overlay
.append($img)
.append($caption);
$('body').append($overlay);
$('.gallery li').click(function (e) {
e.preventDefault();
var src = $(this).children('img').attr("src");
var cap = $(this).children('img').attr("alt");
$img.attr('src',src);
$caption.text(cap);
$overlay.fadeIn('fast');
$overlay.click(function () {
$overlay.fadeOut('fast');
});
});
Run Code Online (Sandbox Code Playgroud) object-literal ×10
javascript ×7
jquery ×3
json ×2
typescript ×2
ajax ×1
asp.net-mvc ×1
c# ×1
css ×1
parsing ×1
php ×1
regex ×1
this ×1