“摘要”的最佳实践函数在JavaScript中? [英] Best Practices for "Abstract" functions in JavaScript?

查看:167
本文介绍了“摘要”的最佳实践函数在JavaScript中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚写了一些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()); // alert'2'

我没有像前面的代码片段那样编写代码的问题。我想写一些代码的功能类似于OOP抽象类。这是我努力的结果:

  var myStuff =(function(){
var number = 0;
var fn = {};
fn.increment = function(){number ++;};
fn.decrement = function(){number--;};
fn.doSomethingCrazy = function(){抛出新的错误('未实现');}; / /我想指定以后这是做什么。
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()); // alert'4'

上面的代码片段很有用,但看起来并不优雅。也许我试图强制JavaScript(一种功能性语言)做一些它没有设计的事情(对象继承)



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

解决方案

只是不定义函数。 p>

Javascript是一种<鸭>型的语言。如果它看起来像一只鸭子,它像鸭子一样呱呱叫,它就像一只鸭子。

你不需要做任何特别的事情来完成这项工作;只要函数在你调用的时候存在,它就会正常工作。



如果你在一个没有这个函数的实例上调用它,你会得到在现场发生错误。


I just wrote some JavaScript code that follows along with what I believe to be good practice for creating an object with closure and some functions:

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'

I have no problem writing code like the previous snippet. I would like to write some code with functionality similar to a OOP "abstract" class. Here is the result of my effort:

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'

The above code snippet works, but it doesn't seem graceful. Perhaps I'm trying to force JavaScript (a functional language) to do something it isn't designed to do (object inheritance)

What is a good way to define an object in JavaScript so that a function of that object can be defined later?

解决方案

Just don't define the function.

Javascript is a duck-typed language. If it looks like a duck and it quacks like a duck, it is a duck.
You don't need to do anything special to make this work; as long as the function exists when you call it, it will work fine.

If you call it on an instance that doesn't have the function, you'll get an error at the callsite.

这篇关于“摘要”的最佳实践函数在JavaScript中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆