答案 0 :(得分:1)
Javascript是动态的,没有涉及编译(除了浏览器中的JIT编译,可能),所以像这样的东西实际上是微不足道的,需要在运行时发生:
someObject.newMethod = function(s) { console.log("haha") }
这会向对象newMethod
添加新方法someObject
。
使用原型,您可以在一个步骤中向多个实例添加方法 - 它们将立即可用于该原型的所有实例。
答案 1 :(得分:0)
函数是JavaScript中的一等公民 从Chrome执行以下代码并查看控制台输出;
第一次会看到错误“TypeError:undefined id not a function”,因为hello函数不存在。
第二次没有错误,我们将获得“Hello Exits”
var object = {};
try {
object.hello("Does not exit");
}
catch(err) {
console.log(err);
}
object.hello = function(name){
console.log("Hello " + name);
}
try {
object.hello("Exits");
console.log("No error");
}
catch(err) {
console.log(err);
}
答案 2 :(得分:0)
我认为你的意思是动态添加代码?
在javascript中执行此操作实际上更容易。
可以使用eval
函数完成。
用法:
eval('code to be run');
示例:
<p id="para">this is a paragraph</p>
eval('document.getElementById("para").innerHTML = "this is a changed paragraph"');
注意eval
函数中的javascript是一个字符串。
eval
接受一个字符串并将其评估为javascript。
警告,假设您在客户端使用javascript,这是非常气馁的。
eval
将从任何地方获取并运行代码,这被视为安全风险。
如果您使用use strict
,则不允许使用eval。
答案 3 :(得分:0)
是
在JavaScript中,我们将函数作为第一类对象,您可以轻松地操作它们。结合对象是基于原型而不是基于类的事实,您可以轻松地向对象添加方法。或者对象的原型:
//add function to one object :
var object = {};
object.sayHello = function(){
alert("hello");
};
object.sayHello();
//add function to a prototype
//our constructor
function Person(firstName, lastName) {
this.firstName = firstName;
this.lastName = lastName;
}
var p = new Person("John", "Doe");
Person.prototype.sayMyName=function(){
alert("My name is "+this.firstName+ " " + this.lastName);
};
//now all persons can say their name
p.sayMyName();
p2 = new Person("Isaac", "Newton");
p2.sayMyName();
玩{是jsbin
答案 4 :(得分:0)
JavaScript没有生成compile
文件的.class
阶段。 JS代码在运行时由浏览器解释。添加动态函数非常简单,很难记住/找到对象上可用的函数数量。
例如,地球范围内有一个对象globalObj
。在档案a.js
中:
globalObj.a = function () { console.log('from a.js'.); }
在档案b.js
中:
globalObj.b = function () { console.log('from b.js'.); }
在包含数百个JS文件的项目中,您可能很容易迷路。 IDE也面临同样的问题。