什么是列表方法之间的差异append()和extend()?
刚刚开始关注Ruby元编程.mixin/modules总是让我困惑.
那么主要区别在于这还是潜伏着更大的龙? 例如
module ReusableModule
def module_method
puts "Module Method: Hi there!"
end
end
class ClassThatIncludes
include ReusableModule
end
class ClassThatExtends
extend ReusableModule
end
puts "Include"
ClassThatIncludes.new.module_method # "Module Method: Hi there!"
puts "Extend"
ClassThatExtends.module_method # "Module Method: Hi there!"
Run Code Online (Sandbox Code Playgroud) 给出两个列表:
x = [1,2,3]
y = [4,5,6]
Run Code Online (Sandbox Code Playgroud)
语法是什么:
x到y这样y现在看起来像[1, 2, 3, [4, 5, 6]]?x进入y,使得y现在的样子[1, 2, 3, 4, 5, 6]?我已经做了一些关于如何扩展ActiveRecord:Base类的阅读,所以我的模型会有一些特殊的方法.扩展它的简单方法是什么(逐步教程)?
SASS有一个叫做的功能@extend,允许选择器继承另一个选择器的属性,但不复制属性(如mixins).
LESS也有这个功能吗?
我想要它的主要原因是我想扩展我的初始化函数.
像这样的东西:
// main.js
window.onload = init();
function init(){
doSomething();
}
// extend.js
function extends init(){
doSomethingHereToo();
}
Run Code Online (Sandbox Code Playgroud)
所以我想扩展一个函数,比如我在PHP中扩展一个类.
我也想从其他文件扩展它,所以例如我有原始的init函数main.js和扩展函数extended.js.
我有一个将config对象作为参数的函数.在函数内,我也有default对象.这些对象中的每一个都包含基本上用作函数内其余代码的设置的属性.为了防止必须指定config对象中的所有设置,我使用jQuery的extend方法来填充一个新对象,如果未在对象中指定,则使用对象中的settings任何默认值:defaultconfig
var config = {key1: value1};
var default = {key1: default1, key2: default2, key 3: default 3};
var settings = $.extend(default, config);
//resulting properties of settings:
settings = {key1: value1, key2: default2, key 3: default 3};
Run Code Online (Sandbox Code Playgroud)
这很好用,但我想在不需要jQuery的情况下重现这个功能.是否有一个同样优雅(或接近)的方法用普通的'javascript做到这一点?
这个问题与" 如何动态合并两个JavaScript对象的属性? "问题不重复.虽然这个问题只是想创建一个包含来自两个独立对象的所有键和值的对象 - 我特别想要解决如何在两个对象共享一些但不是所有键以及哪个对象将优先的情况下执行此操作(如果存在重复键,则生成的对象的默认值.更具体地说,我想解决使用jQuery的方法来实现这一点,并找到一种没有jQuery的替代方法.虽然这两个问题的许多答案都重叠,但这并不意味着问题本身是相同的.
我试图理解jquery插件语法,因为我想将两个插件合并为一个.也需要能够停止de间隔或运行多次的闪光灯.
无论如何,这个语法是一样的
jQuery.fn.extend({
everyTime: function(interval, label, fn, times) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, times);
});
},
oneTime: function(interval, label, fn) {
return this.each(function() {
jQuery.timer.add(this, interval, label, fn, 1);
});
},
Run Code Online (Sandbox Code Playgroud)
这个
$.fn.blink = function(options)
{
Run Code Online (Sandbox Code Playgroud)
因为它看起来像第一个(没有=)是一次设置多个方法的方法.这是正确的吗?当我在这里时,将元素和一些逻辑添加到jquery对象的原因是什么?
jQuery.extend({
timer: {
global: [],
guid: 1,
dataKey: "jQuery.timer",
Run Code Online (Sandbox Code Playgroud)
(这是来自计时器插件)
implement还是extend可以用吗?实现似乎是一种强制某类方法存在的方法,并且这些方法函数调用的格式正确.实现不是将变量或"设置"传递给类的方法吗?
预期的现实生活场景:我有一个电子商务平台,其中包含多个支付类,所有支付类都遵循相同的设计.当应该添加新的支付类时,很容易遵循定义的设计interface,从一开始就确保所有的零碎都在那里.
扩展类使扩展(child?)类继承其父类的所有内容,但声明为的方法和变量除外private?
预期的现实生活场景:我有一个叫sessions有两个名为sessioncookies和的子类的类databasesessions.sessioncookies并且databasesessions,它们一起从其父会话继承了许多相互配置选项,从而可以轻松更改配置选项以影响各种最终的访客数据存储.
我是一个相当新的jQuery用户,希望扩展现有的jQuery插件,它可以满足我所需要的75%.我试着做这个功课.我在stackoverflow上检查了以下问题:
我已经阅读了 extend方法.然而,所有这些功课让我感到困惑.我正在使用fullcalendar插件,需要修改一些行为以及添加新的事件挂钩.我是否坚持在插件封闭本身中这样做?我错过了一些明显的东西吗
理想情况下,我们可以将代码与插件代码分开,以便进行可能的升级.任何帮助将不胜感激,特别是关于我在哪里错过了关于其他Stack Overflow问题中已经提出的解决方案是否有意义的一些信息或意见的指示.对我来说,他们互相矛盾,我仍然感到困惑.