定义本机JavaScript函数

定义本机JavaScript函数,javascript,Javascript,如何定义JavaScript函数 例如: string.doSomething(); // OR element.getSomeInfo(); var foo = {}; foo.sayHello = function () { alert('hello'); } foo.sayHello(); 我在这上面找不到任何东西,但可能是因为它的名字我不知道。 编辑 大约四年后,让我重新表述这个问题,解释我的意思。我不知道对象,但本质上我的问题是“如何将函数定义为对象的属性?”。我不一定要

如何定义JavaScript函数

例如:

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做什么?@vrugtehagel
name
是传递给函数
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();