GVKun编程网logo

将方法附加到对象与使用Javascript中的函数(方法传入对象)

13

在本文中,我们将给您介绍关于将方法附加到对象与使用Javascript中的函数的详细内容,并且为您解答方法传入对象的相关问题,此外,我们还将为您提供关于Javascript中的函数使用方法、javas

在本文中,我们将给您介绍关于将方法附加到对象与使用Javascript中的函数的详细内容,并且为您解答方法传入对象的相关问题,此外,我们还将为您提供关于Java script中的函数使用方法、javascript – 将匿名对象添加到对象、javascript – 无法附加到jQuery包装、JavaScript中的this关键字介绍与使用实例_javascript技巧的知识。

本文目录一览:

将方法附加到对象与使用Javascript中的函数(方法传入对象)

将方法附加到对象与使用Javascript中的函数(方法传入对象)

在 Javascript中,直接或通过原型链将方法附加到对象非常容易.我使用的许多库都有这种行为.一个例子是AngularJS的$resource库,其中返回的对象有一些魔术方法,如.$save()和.$delete(),它们触发对服务器的请求.

但是,在使用Clojure一段时间之后,我开始喜欢将数据结构传递给函数来触发行为的方法,对于我的下一个JavaScript项目,我正在考虑尝试以这种方式编写它.

我的问题是,每种编程方式的优缺点是什么?

将方法直接附加到对象(因此,通常是将对象调整到适当位置)与将对象作为纯数据结构传递到函数中的优点/缺点是什么,该函数在处理后将返回新的数据结构.

我在AngularJS中意识到,为了利用双向绑定,您通常需要使用第一个系统,但是像React这样的框架似乎可以利用原位变异或使用新的对象实例.

解决方法

非常好的问题.

我区分“我的类”,即我控制的代码和“外来类”,即我使用的外部代码 – 无论是内置的东西还是第三方的库.

对于我自己的代码,我经常更喜欢采用OOP方式,所以我宁愿做myObject.doSomething()而不是My.doSomething(对象),但它确实取决于.

对于“外国”代码,我几乎没有“附加”方法.只有绝对特殊的情况.我没有用我的方法扩展内置对象和类.我几乎从不在foreight类和实例中注入方法.

主要原因是兼容性.如果我可能会为ForeignClass添加一些拆分方法是一个好主意,其他人可能会有同样的想法.他们的分裂可能与我的完全不同.看看AngularJS如何考虑这个问题:他们使用$method命名约定来试图减少冲突.

如果你更少关注在外部类或对象中注入方法,而在OOP方面注意更多,那么它实际上取决于用例.不要把你的编程范例放在实际需要之前.如果你有一些领域,你可能会更好地用OO术语来设计它.反之亦然,如果你只是做无状态函数,实际上并不需要实例.

这实际上是JavaScript中最好的东西之一 – 您可以同时实现和使用不同的范例而不会出现任何技术问题.

希望能帮助到你.

PS.其他相关术语之一是anemic data model.

Java script中的函数使用方法

Java script中的函数使用方法

前言

什么是函数,就是把一段相对独立的具有特定功能的代码块封装起来,形成一个独立实体,就是函数,起个名字(函数名),在开发中可以反复调用,函数的作用就是封装一段代码,可以重复使用。

1. 函数的声明及调用

1.1声明

  • 关键字声明
function 函数名(){
  // 函数体
}
  • 表达式声明
var fn = function() {
  // 函数体
}
  • 特点:

    函数声明的时候,函数体并不会执行,只要当函数被调用的时候才会执行。 一个函数一般都特定的用来干 一件 事情

1.2 调用

  • 调用函数的语法:
函数名();
  • 特点:

    函数体只有在调用的时候才会执行,调用需要()进行调用。 可以调用多次(重复使用)

// 声明函数
function sayHi() {
  console.log("吃了没?");
}

// 调用函数
sayHi();

// 求1-100之间所有数的和
function getSum() {
  var sum = 0;
  for (var  i = 0; i < 100; i++) {
    sum += i;
  }
  console.log(sum);
}
// 一段代码可以多次调用
getSum();
getSum();
getSum();

1.2 参数

  • 为什么要有参数
function getSum() {
  var sum = 0;
  for (var i = 1; i <= 100; i++) {
    sum += i;
  }
  console.log();
}

// 虽然上面代码可以重复调用,但是只能计算1-100之间的值
// 如果想要计算n-m之间所有数的和,应该怎么办呢?
  • 语法:
// 函数内部是一个封闭的环境,可以通过参数的方式,把外部的值传递给函数内部
// 带参数的函数声明
function 函数名(形参1, 形参2, 形参...){
  // 函数体
}

// 带参数的函数调用
函数名(实参1, 实参2, 实参3);
  • *形参和实参 *
  1. 形式参数:在声明一个函数的时候,为了函数的功能更加灵活,有些值是固定不了的,对于这些固定不了的值。我们可以给函数设置参数。这个参数没有具体的值,仅仅起到一个占位置的作用,我们通常称之为形式参数,也叫形参。
  2. 实际参数:如果函数在声明时,设置了形参,那么在函数调用的时候就需要传入对应的参数,我们把传入的参数叫做实际参数,也叫实参。
function fn(a, b) {
  console.log(a + b);
}
var x = 5, y = 6;
fn(x,y); 
// x,y实参,有具体的值。
// 函数执行的时候会把x,y复制一份给函数内部的a和b,
// 函数内部的值是复制的新值,无法修改外部的x,y

JS 函数在调用时,允许传多个实参,就是实参个数可以比形参个数多;

1.3 函数的返回值

当函数执行完的时候,并不是所有时候都要把结果打印。我们期望函数给我一些反馈(比如计算的结果返回进行后续的运算),这个时候可以让函数返回一些东西。也就是返回值。函数通过return返回一个值

返回值语法:

//声明一个带返回值的函数
function 函数名(形参1, 形参2, 形参...){
  //函数体
  return 返回值;
}

//可以通过变量来接收这个返回值
var 变量 = 函数名(实参1, 实参2, 实参3);

**返回值详解: ** 如果函数没有显示的使用 return语句 ,那么函数有默认的返回值:undefined 如果函数使用 return语句,那么跟在return后面的值,就成了函数的返回值 如果函数使用 return语句,但是return后面没有任何值,那么函数的返回值也是:undefined 函数使用return语句后,这个函数会在执行完 return 语句之后停止并立即退出,也就是说return后面的所有其他代码都不会再执行。

作业:

  • 求1-n之间所有数的和
  • 求n-m之间所有数的和
  • 求2个数中的最大值

1.4 函数相关的其它事情

1.4.1 匿名函数与自调用函数

匿名函数:没有名字的函数

匿名函数如何使用:

将匿名函数赋值给一个变量,这样就可以通过变量进行调用

匿名函数如果没有任何变量来表示它,那么就不能直接调用来执行,因此可以通过匿名函数的自调用的方式来执行

(function () {
  alert(123);
})();

关于自执行函数(匿名函数自调用)的作用:防止全局变量污染。

1.4.2 函数本身也是值

function fn() {}
console.log(typeof fn);
  • 函数作为参数

因为函数也是一种值类型,可以把函数作为另一个函数的参数,在另一个函数中调用

function f1(f){
    //f = function f2(){
    //    console.log(2);
    //}
    f();
}

function f2(){
    console.log(2);
}
f1(f2); //2
  • 函数做为返回值

因为函数是一种类型,所以可以把函数可以作为返回值从函数内部返回。

function fn(b) {
  var a = 10;
  return function () {
    alert(a+b);
  }
}

var f = fn(5);
f();  //15

javascript – 将匿名对象添加到对象

javascript – 将匿名对象添加到对象

我知道要将一个命名对象添加到现有的 JavaScript对象中:

var json = {};
json.a = {name:"a"};

但是,如何以类似的方式将对象添加到现有JavaScript对象而不为其指定关联名称,以便可以通过for()语句访问它.对不起,如果我有点模糊,我对JavaScript对象了解不多.

更新:
我希望最终结果如下所示:

var json = [{name:'a'}{name:'b'}];

解决方法

尝试将项目推送到使用的数组

myArrayVar.push(value);

要么

myArrayVar[myArrayVar.length] = value;

javascript – 无法附加到jQuery包装

javascript – 无法附加到jQuery包装

为什么不能附加到用于包装另一个元素的元素 – 请参阅下面的示例?

var $test = $('.test'),$test1 = $('.test1'),$move = $('.move'),$testWrapper = $('

                  

总结

以上是小编为你收集整理的javascript – 无法附加到jQuery包装全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

javascript

JavaScript中的this关键字介绍与使用实例_javascript技巧

JavaScript中的this关键字介绍与使用实例_javascript技巧

当创建一个类的时候,如果希望下面new出来的每个类都拥有一些通用的变量或者其他的函数,这个this关键字这是最好的方式。

当然,既然是面向对象的语言,必然存在访问权限的问题,这里也和this关键字息息相关。下面我们来演示一个例子来说明一下这个类的访问权限的问题.

复制代码 代码如下:

//Person类 
   function Person(){
    var name="abc";//var声明的都是类内部的私有变量,外部无法访问 
    var age = 20;

    this.name2="edg";//this声明的是公开变量,外部可以访问 

    this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法 
    window.alert(name);
    }

    function show2(){//shouw2方法是类内部的私有方法,不能被外部访问 

    }
}

var p1 = new Person();
document.writeln(p1.name2+p1.name);
p1.show();
 //Person类 www.jb51.net
    function Person(){
  var name="abc";//var声明的都是类内部的私有变量,外部无法访问
  var age = 20;

  this.name2="edg";//this声明的是公开变量,外部可以访问

  this.show=function(){//shou方法是公开的方法,可以被外部访问,而且可以访问类内部私有方法
  window.alert(name);
  }

  function show2(){//shouw2方法是类内部的私有方法,不能被外部访问

  }
 }

 var p1 = new Person();
 document.writeln(p1.name2+p1.name);
 p1.show();


这个Person其实就是一个类,类名就是Person,其中声明的变量,var开头的都是私有变量,只能在类的内部实现访

问,而通过this关键字声明的变量是公有的变量,可以在外部访问。当然,只需要公开一个方法,就可以实现外部访

问类内部的私有变量,这个this.show=function(){}就是声明一个共有方法,在类的外部也是可以调用的。当然,以此

类推,直接声明的方法是私有的方法/

下面再看一个例子

复制代码 代码如下:

function test(){
    alert(this.v);
}
var v = 902;
window.test();
 function test(){
  alert(this.v);
 }
 var v = 902;
 window.test();

代码很简短,这个的意思是,谁调用的这个方法,这个this就是指的那个对象,比如,window对象调用的test方法,

所以在test方法内部,这个this,v就是指在window也就是外部全局是否定义了一个v变量,通过查看可以知道,定义了

一个var v = 902;所以这个方法调用的其实就是v的值.

关于将方法附加到对象与使用Javascript中的函数方法传入对象的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Java script中的函数使用方法、javascript – 将匿名对象添加到对象、javascript – 无法附加到jQuery包装、JavaScript中的this关键字介绍与使用实例_javascript技巧等相关知识的信息别忘了在本站进行查找喔。

本文标签:

上一篇javascript – ng-options,对象设置为ng-model(js设置对象的key)

下一篇javascript – 将node-webkit作为node.js app运行(nodejs web3)