如何使变量表现得像函数/对象。我想实现与Jasmine Matchers
类似的东西describe("The 'toBe' matcher compares with ===", function() {
it("and has a positive case", function() {
expect(true).toBe(true);
});
it("and can have a negative case", function() {
expect(false).not.toBe(true);
});
});
我如何实现not.toBe()
?
答案 0 :(得分:2)
那只是返回一个看起来有点像这样的对象:
{
not : {
toBe : function () {}
},
toBe : function () {}
}
因此,对象返回基本上有两个成员 - 对象not
和函数toBe
。对象not
有一个成员 - 另一个名为toBe
的函数。
期望函数的简单实现:
function expect (var) {
return {
toBe : function (var2) {
if (var != var2) {
throw new Error("not to be");
}
},
not : {
toBe : function (var2) {
if (var == var2) {
throw new Error("not NOT to be");
}
}
}
}
}
如果检查的变量不符合预期,则上面的expect
函数将抛出错误:
expect(false).toBe(false);
expect(false).not.toBe(true);
expect(false).toBe(true); // error
expect(false).not.toBe(false); // error
注意:这只是使代码“漂亮”的语法糖。只需使用适当的函数名即可实现相同的逻辑:
function expect (var) {
return {
toBe : function (var2) {
if (var != var2) {
throw new Error("not to be");
}
},
not_ToBe : function (var2) {
if (var == var2) {
throw new Error("not NOT to be");
}
}
}
}
哪个更简单但可能不那么漂亮:
expect(false).toBe(false);
expect(false).not_toBe(true);
expect(false).toBe(true); // error
expect(false).not_toBe(false); // error
答案 1 :(得分:0)
我认为你想在javascript中创建一个对象。 这是一个具有函数" Hallo"的对象的示例。
var testObj = {
Hallo: function() {alert("Hallo");}
};
您可以使用以下方式调用它:
testObj.Hallo();