我试图链接ex1和ex2函数,并在比较链式方法中提供的值后显示true或false。
function test() {
var ex1 = function(parm) {
return this;
}
var ex2 = function(par) {
return this;
}
var result = function() {
console.log('compare and display a boolean result '+ex1(parm).ex2(par));
}
};
var res = test();
res.ex1('Sam').ex2('Eddie').result();
提前感谢您的帮助。
答案 0 :(得分:4)
你可以这样做:
function Test() {
this.ex1 = function(parm) {
this.param1 = parm;
return this;
}
this.ex2 = function(par) {
this.param2 = par;
return this;
}
this.result = function() {
console.log('compare and display a boolean result ' + (this.param1 == this.param2));
}
//return this;
};
var res = new Test();
res.ex1('Sam').ex2('Sam').result();

编辑我的答案,以免污染 Ced 建议的全局命名空间。此外,如果你走这条路线,将你的方法从构造函数中移动到Test
的原型对象。所以,作为一个例子,ex1应该写成
Test.prototype.ex1 = function(parm) {
this.parm = parm;
return this;
}
其他方法也是如此。
答案 1 :(得分:0)
您可以使用对象文字,并使其更具可读性:
var Test = {
that: function(param) {
this.param1 = param;
return this;
},
isEqualTo: function(param) {
this.param2 = param;
return this.param1 === this.param2;
}
};
console.log(Test.that('abc').isEqualTo('cba')); // false
console.log(Test.that('123').isEqualTo('321')); // false
console.log(Test.that('asd').isEqualTo('asd')); // true
console.log(Test.that('tre').isEqualTo('tre')); // true
// or just reusing
Test.that('word');
console.log(Test.isEqualTo('drow')); // false
console.log(Test.isEqualTo('world')); // false
console.log(Test.isEqualTo('word')); // true
答案 2 :(得分:0)
function test() {
var ex1 = function(parm) {
return this;
}
var ex2 = function(par) {
return this;
}
var result = function() {
console.log('compare and display a boolean result '+ex1(parm).ex2(par));
}
};
因此,当执行此操作时,它不会返回任何内容:
var res = Test();
因此res未定义。因此,根据定义,ex1不存在于未定义的位置。
res.ex1('Sam').ex2('Eddie').result();
我上面的答案建议是归还这个。 不要这样做。
function test() {
this.ex1 = function(parm) {
this.param1 = parm;
return this;
}
this.ex2 = function(par) {
this.param2 = par;
return this;
}
this.result = function() {
console.log('compare and display a boolean result ' + (this.param1 == this.param2));
}
return this;
};
当它进入函数this
等于windows时。因此,您正在污染窗口对象。
你能做什么呢?
function Test() {
this.parm;
this.par;
this.ex1 = function(parm) {
this.parm = parm;
return this;
}
this.ex2 = function(par) {
this.par = par;
return this;
}
this.result = function() {
console.log('compare and display a boolean result '+ (this.parm === this.par));
}
};
var res = new Test();
res.ex1('Sam').ex2('Eddie').result();
您调用new Test():创建一个新对象{}
,其中该值指向它。然后执行该功能。因此,对象现在包含函数,并且不会污染您的窗口。
答案 3 :(得分:0)
你可以返回一个内部函数的对象,如果调用了内部函数,则返回theresult而不使用另一个函数进行调用。
function test(value1) {
return {
equals: function (value2) {
return value1 === value2;
}
};
}
console.log(test(1).equals(1));
console.log(test(1).equals(2));

为了使用上面的显式调用result
,您可以在返回对象中添加结果属性,例如
function test(value1) {
return {
equals: function (value2) {
return {
result: function () {
return value1 === value2;
}
};
}
};
}
console.log(test(1).equals(1).result());
console.log(test(1).equals(2).result());

与具有所有属性
的对象几乎相同
function test(value1) {
var v2,
object = {
equals: function (value2) {
v2 = value2;
return object;
},
result: function () {
return value1 === v2;
}
};
return object;
}
console.log(test(1).equals(1).result());
console.log(test(1).equals(2).result());