anjular中Service、Factory、Provider的使用与js中创建对象的总结
在学习anjular中Service的使用时,发现和js中的创建对象的方式有一定的联系,所以总结了anjular中Service、Factory、Provider的使用方式与js创建对象的方式
一、先总结下js中创建对象的几种方式
function createObject(username, password) {
var object = new Object(); //等价于 var object={};
object.username = username; object.password = password;
object.get=function(){
alert(this.username); //等价于alert(a.username)
}
return object;
}
var object = createObject("zhangsan", "123"); //此方法没有用new相 当于直接调用函数
object.get(); //zhangsan
function Person(username, password) {
//在执行第一行代码前,js引擎会为我们生成一个对象
this.username =username; this.password = password;
this.getInfo = function() {
alert(this.username);
}
//此处有一个隐藏的return语句,用于将之前生成的对象返回
//只有在后面用new的情况下,才会出现注释所述的这两点情况
}
var person = new Person("zhangsan", "123");//用了new才能得到一个对象,否则person的值会为undefuned
person.getInfo(); //zhangsan
function Person(username,password) {
this.username = username;
this.password = password;
}
Person.prototype.getInfo = function() {
alert(this.username);
}
var p = new Person("lisi","123456"); //此方式包含了构造函数方式,所以创建对象需要使用new
p.getInfo();

var myApp = angular.module("myApp",[]);
myApp.service("myService",function(){
var data1="data1";
this.data2="data2";
this.getData1=function(){
return data1;
};
});
myApp.controller("myCtr1",["$scope","myService",function($scope,myService){
$scope.getWay1=function(){
console.log( myService.getData1() );
};
$scope.getWay2=function(){
console.log( myService.data2 );
};
}]);
<div ng-controller="myCtr1">
<button ng-click="getWay1()"></button> //data1
<button ng-click="getWay2()"></button> //data2
</div>
var app = angular.module('myApp', []);
app.factory('myFactory', function() {
console.log('instance myFactory');
var factory = {};
var data1= "data1";
factory.data2 = "data2";
factory.getData1 = function() {
return data1;
};
return factory;
});
app.controller('myCtrl',["$scope","myFactory",function(){
$scope.getWay1 = function() {
alert(myFactory.getData1());
};
$scope.getWay2= function() {
alert(myFactory.data2);
};
}]);
<div ng-controller="myCtrl">
<button ng-click="getWay1()">按钮一</button> //data1
<button ng-click="getWay2()">按钮二</button> //data2
</div>
app.factory('myFactory', function() {
return {
getWay1:functory(){
},
getWay2:functory(){
}
}
});
var app = angular.module('myApp', []);
app.provider('testProvider', function(){
console.log('instance testProvider');
var f = function(name) {
alert("Hello, " + name);
};
this.$get = function(){
return f;
};
});
app.controller('myCtrl1', function($scope, testProvider) {
$scope.onclick1 = function() {
testProvider("十盏");
};
});
app.controller('myCtrl2', function($scope , testProvider) {
$scope.onclick2 = function() {
testProvider("provider: 十盏");
};
});
<div ng-controller="myCtrl1">
<button ng-click = "onclick1()">请点击我1</button> //十盏
</div>
<div ng-controller="myCtrl2">
<button ng-click = "onclick2()">请点击我2</button>
//provider: 十盏
</div>
var app = angular.module('app', []);
app.provider('movie', function () {
var version;
return {
setVersion: function (value) {
version = value;
},
$get: function () {
return {
title: 'The Matrix' + ' ' + version
}
}
}
});
app.config(function (movieProvider) { //在config阶段定义的服务的名字+Provider
movieProvider.setVersion('Reloaded');
});
app.controller('ctrl', function (movie) {
expect(movie.title).toEqual('The Matrix Reloaded');
});
anjular中Service、Factory、Provider的使用与js中创建对象的总结的更多相关文章
- angularjs---服务(service / factory / provider)
初angularJs时 常写一些不够优雅的代码 !我总结了一下看看各位有没有中枪的!-----( 这里只针对服务service及其相关! ) 以下做法不太优雅 兄弟controller 之间的相同 ...
- json--pyton中obj与json的互转,js中obj与json的互转
json 解释:json是一种跨平台的通用的数据格式 python中对象(obj)与json之间的相互转换 1.对象(obj)转json格式的字符串 json.dumps(res) res = () ...
- angular 服务 service factory provider constant value
angular服务 服务是对公共代码的抽象,由于依赖注入的要求,服务都是单例的,这样我们才能到处注入它们,而不用去管理它们的生命周期. angular的服务有以下几种类型: 常量(Constant): ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法(前后台示例代码)
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- asp.net后台cs中的JSON格式变量在前台Js中调用方法
//后台cs代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using ...
- js中的逻辑与(&&)和逻辑或(||)
之前有一个同事去面试,面试过程中碰到这样一个问题: 在js中写出如下的答案 : var a = 2; var b = 3; var andflag = a && b ; var orf ...
- 在JS中关于堆与栈的认识function abc(a){ a=100; } function abc2(arr){ arr[0]=0; }
平常我们的印象中堆与栈就是两种数据结构,栈就是先进后出:堆就是先进先出.下面我就常见的例子做分析: main.cpp int a = 0; 全局初始化区 char *p1; 全局未初始化区 main( ...
- 拾取模型的原理及其在THREE.JS中的代码实现
1. Three.js中的拾取 1.1. 从模型转到屏幕上的过程说开 由于图形显示的基本单位是三角形,那就先从一个三角形从世界坐标转到屏幕坐标说起,例如三角形abc 乘以模型视图矩阵就进入了视点坐标 ...
- js中常用的操作
1.js中常用的数组操作 2.js中常用的字符串操作 3.js中常用的时间日期操作 4.定时器
随机推荐
- MYSQL数据库-其他
FROM:实验楼 索引: 当表中有大量记录时,若要对表进行查询,没有索引的情况是全表搜索.而如果在表中已建立索引,在索引中找到符合查询条件的索引值,通过索引值就可以快速找到表中的数据. 建立索引: $ ...
- IOS各种手势操作实例
先看下效果 手势相关的介绍 IOS中手势操作一般是 UIGestureRecognizer 类的几个手势子类去实现,一般我们用到的手势就这么5种: 1.点击 UITapGestureRecogniz ...
- servlet与jsp的区别(转)
一.基本概念 1.1 Servlet Servlet是一种服务器端的Java应用程序,具有独立于平台和协议的特性,可以生成动态的Web页面.它担当客户请求(Web浏览器或其他HTTP客户程序)与服务器 ...
- laravel 框架memcache的配置
Laravel5框架在Cache和Session中不支持Memcache,看清了是Memcache而不是Memcached哦,MemCached是支持的但是这个扩展真的是装的蛋疼,只有修改部分源码让其 ...
- Dubbo的配置及使用
1. Dubbo是什么? Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案.简单的说,dubbo就是个服务框架,如果没有分布式的需求,其实是不需 ...
- 打印pid,写着玩。
#include <stdio.h> #include <string.h> #include <dirent.h> #include <limits.h&g ...
- List去除重复的元素
有两种方法,一种是去重不带顺序的,一种是去重带顺序的. /* * 方法1: 无顺序 * Hastset根据hashcode判断是否重复,数据不会重复 */ public static Lis ...
- jmeter读取文件进行参数化时随机取值实现
jmeter能用来做参数化的组件有几个,但是都没有随机取值的功能,遇到随机取值的需求怎么办呢? 突发奇想,可以用函数_StringFromFile来实现,先来介绍下此函数: 此函数位于函数助手中, 函 ...
- jquery template.js前端模板引擎
作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行 ...
- huffman压缩解压文件【代码】
距离上次写完哈夫曼编码已经过去一周了,这一周都在写huffman压缩解压,哎,在很多小错误上浪费了很多时间调bug.其实这个程序的最关键部分不是我自己想的,而是借鉴了某位园友的代码,但是,无论如何,自 ...