定义本机JavaScript函数
如何定义JavaScript函数 例如:定义本机JavaScript函数,javascript,Javascript,如何定义JavaScript函数 例如: string.doSomething(); // OR element.getSomeInfo(); var foo = {}; foo.sayHello = function () { alert('hello'); } foo.sayHello(); 我在这上面找不到任何东西,但可能是因为它的名字我不知道。 编辑 大约四年后,让我重新表述这个问题,解释我的意思。我不知道对象,但本质上我的问题是“如何将函数定义为对象的属性?”。我不一定要
string.doSomething(); // OR
element.getSomeInfo();
var foo = {};
foo.sayHello = function () {
alert('hello');
}
foo.sayHello();
我在这上面找不到任何东西,但可能是因为它的名字我不知道。
编辑 大约四年后,让我重新表述这个问题,解释我的意思。我不知道对象,但本质上我的问题是“如何将函数定义为对象的属性?”。我不一定要区分扩展本机Javascript类(这是一个坏主意)和仅定义自己的对象(使用函数作为属性) 因此,为了回答我自己的问题,以下是一些不同的方法:
let foo = {
bar: x=>1/x;
}
例如,foo.bar(4)
返回.25
。另一个:
function Rocket(speed){
this.speed = speed;
this.launch = ()=>{
this.speed = 'super fast and upwards';
}
}
所以现在我们可以定义阿波罗=新火箭(“静止”)代码>并调用Apollo.launch()代码>
我们还可以通过
然后使用Apollo.stop()调用它代码>
这就是您要找的吗?您可以添加一个函数作为对象的成员
例如:
string.doSomething(); // OR
element.getSomeInfo();
var foo = {};
foo.sayHello = function () {
alert('hello');
}
foo.sayHello();
添加到内置字符串对象()的原型
我不知道你在这里指的是什么元素。string.doSomething=function(){…}
虽然这肯定是重复的。不清楚你在问什么。你是在问如何添加本机JS类的方法吗?@PatrikOldsberg-OP可能在谈论修改字符串的原型。@Derek朕會功夫 我考虑过这一点,但是element.getSomeInfo()
在这种情况下对我来说没有意义。您可能正在寻找向添加方法(其中内置对象是本机对象的子集)。这通常被认为不是一个好主意,但是如果能够理解并解释这些陷阱,这可能是合适的。我的意思更像是,例如:string.getFirstLetter(),其中的“Hello world”。getFirstLetter()将返回“H”和“Bye!”。getFirstLetter()将返回“B”。我知道这个例子可以通过字符串[0]更容易地完成,但这是为了让您了解我的意思。@vrugtehagel我明白了,所以您想知道如何向类的原型添加方法。您应该添加一些关于原型的详细信息(例如,链接或其他内容),因为只发布代码并不是完整的答案。是的!虽然我不完全理解你的函数Person(name){this.name=name}。this.name=name做什么?@vrugtehagelname
是传递给函数Person
的参数。(快速补充说明:在JavaScript中,函数是第一类的;可能会帮助您理解。)但是,我们希望Person
对象(几乎像一个类)具有name
属性。通过使用this
,我们将属性name
分配给Person
。这与将xName
传递给函数并且声明为this.name=xName的情况相同代码>。在没有解释的情况下发布代码是没有多大帮助的。@vrugtehagel这是Javascript中创建“类”的惯用方法,尽管这不是您可能习惯的OOP类型。您可能想先研究“this”关键字:@vrugtehagel然后您可能想研究new
关键字,基本上它创建了一个新对象,其原型设置为构造函数的原型。这里Person
是构造函数,我们在其原型上定义了sayHi
,因此p
对象继承了该方法。请注意,当我们在p
上执行sayHi
时,this
关键字指的是p
本身。您可以在此处找到有关新建的更多信息:
String.prototype.doSomething = function(){
console.log('bingo!');
}
var aaa = "testing123";
aaa.doSomething();