gpt4 book ai didi

javascript - JavaScript 中 "Abstract"函数的最佳实践?

转载 作者:行者123 更新时间:2023-12-03 12:30:16 26 4
gpt4 key购买 nike

我刚刚编写了一些 JavaScript 代码,以及我认为创建带有闭包和一些函数的对象的好习惯:

var myStuff = (function() {
var number = 0;
var fn = {};
fn.increment = function() { number++; };
fn.decrement = function() { number--; };
fn.getNumber = function() { return number; };
return fn;
})();

myStuff.increment();
myStuff.increment();
alert(myStuff.getNumber()); // alerts '2'

像前面的代码片段那样编写代码没有问题。我想编写一些功能类似于 OOP“抽象”类的代码。这是我努力的结果:
var myStuff = (function () {
var number = 0;
var fn = {};
fn.increment = function () { number++; };
fn.decrement = function () { number--; };
fn.doSomethingCrazy = function () { throw new Error('not implemented'); }; // I want to specify later what this does.
fn.doSomethingCrazyTwice = function () { fn.doSomethingCrazy(); fn.doSomethingCrazy(); };
fn.getNumber = function () { return number; };
return fn;
})();

myStuff.doSomethingCrazy = function () { this.increment(); this.increment(); };
myStuff.doSomethingCrazyTwice();
alert(myStuff.getNumber()); // alerts '4'

上面的代码片段有效,但看起来并不优雅。也许我正试图强制 JavaScript(一种函数式语言)做一些它不适合做的事情(对象继承)

什么是在 JavaScript 中定义对象以便以后可以定义该对象的函数的好方法?

最佳答案

只是不要定义函数。

Javascript 是一种鸭式语言。如果它长得像鸭子,叫起来像鸭子,那它就是鸭子。
你不需要做任何特别的事情来完成这项工作;只要调用时该函数存在,它就可以正常工作。

如果您在没有该功能的实例上调用它,您将在调用点收到错误消息。

关于javascript - JavaScript 中 "Abstract"函数的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7477453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com