引用类型时,后期绑定意味着类型在运行时才会被识别。
JavaScript是一种后期语言吗?
我认为这是因为它有少量原始类型,而其他所有内容都是Object的实例,并且在运行时强制类型的性质。
var a = 1, b = 'a', c;
c = a + b; // c is a string, but this is only determined at runtime?
答案 0 :(得分:1)
也就是说,(指Nisk的答案)-您实际上可以在Javascript中模拟后期绑定。
下面的代码基本上解释了以下内容
而不是将函数与以后无法更改的值绑定-可以与您以后 CAN 更改的值绑定,即将函数与Object绑定-因为您可以随时更改定义对象后的属性。
.bind
方法进行绑定绑定// Early Binding
var sum = function(a, b) {
return a + b;
};
var x = 5, y = 6;
var sum5n6 = sum.bind(null, x, y);
x = 10;
y = 5;
console.log("with Early Binding -->", sum5n6()); // 11
.bind
方法进行后期绑定var sum2 = function(p) {
return p.x + p.y;
};
var x = 5, y = 6;
var n = {x: x, y: y};
var sumLate = sum2.bind(null, n);
// even though you have "bound" n to sumLate, you can still change
// the properties of n
n.x = 10;
n.y = 5;
console.log("Late Binding -->", sumLate()); // 15
答案 1 :(得分:0)
后期绑定不适用于数据类型,即类型推断。 Javascript是一个即时(JIT)编译的,所有类型都是在运行时推断出来的。
后期绑定更多地与面向对象语言有关,更具体地说是对象(多态/继承等),而不是基本类型。
希望有所帮助。