(网页)Angular.js 中 copy 赋值与 = 赋值 区别
2024-10-19 01:29:08
转自st.gg
Angular.js 中 copy 赋值与 = 赋值 区别
为什么用 $scope.user = $scope.master;
$scope.master 会跟着 $scope.user 改变?angular.copy 和 = 号赋值有什么区别呢?新手还没有搞懂,请教各位了。
<!DOCTYPE html>
<html>
<script src= "http://apps.bdimg.com/libs/angular.js/1.3.9/angular.min.js"></script>
<body> <div ng-app="myApp" ng-controller="formCtrl">
<form novalidate>
First Name:<br>
<input type="text" ng-model="user.firstName"><br>
Last Name:<br>
<input type="text" ng-model="user.lastName">
<br><br>
<button ng-click="reset()">RESET</button>
</form>
<p>form = {{user }}</p>
<p>master = {{master}}</p>
</div> <script>
var app = angular.module('myApp', []);
app.controller('formCtrl', function($scope) {
$scope.master = {firstName:"John", lastName:"Doe"};
$scope.reset = function() {
$scope.user = angular.copy($scope.master);
// 为什么用 $scope.user = $scope.master; master跟着user改变
};
$scope.reset();
});
</script> </body>
</html>
你可以这么来理解:
内存里有一段地址储存了
{ firstName: "John", lastName: "Doe" }
这个数据,并且最开始用$scope.master
指向了它当你
$scope.user = $scope.master
的时候,事实上是让二者同时指向了该数据,因此一个变了另外一个也会跟着变当你
$scope.user = angular.copy($scope.master)
的时候,先做了一份该数据的拷贝(也就是内存中多了另外一份数据,值是一样的,但地址肯定不同),然后让$scope.user
指向了这份拷贝,所以二者指向了不同的内存地址,当然不会相互影响了。
记住,这并非 Angular 的特殊情况,而是编程语言的通用基础。
其实就是一个是拷贝数据,一个是拷贝引用。无论何种编程语言都会有这个问题,所以就会有深拷贝这种概念。
因为项目着急,要用angular.js,修改老是修改出错,都快疯掉了,修改方法还没写,只是动了动数据,数据的属性全变了。唉。加油吧。
最新文章
- 【转】Eclipse打JAR包,插件FatJar安装与使用
- github开源:企业级应用快速开发框架CIIP WEB+WIN+移动端
- 【考试】简单的sql语句
- 配置tomcat时踩过的坑
- EXTJS 3.0 资料 控件之 FormPanel 插入button用法
- CSS和JS样式属性对照表
- WebService基于SoapHeader实现安全认证(一)
- Cmake find_package()相关
- Apriori算法
- CentOS 5 安装Oracle10g
- initWithNibName与viewDidLoad的执行关系以及顺序
- WPF 实现验证码功能
- Web桌面应用框架3:Web桌面应用开发的N种Style
- 笔记︱图像语义分割(FCN、CRF、MRF)、论文延伸(Pixel Objectness、)
- 关于 frame的一些基本知识
- linux基础命令用法
- Running Tensorflow on AMD GPU
- 删除API
- asp.net core 通过ajax调用后台方法(非api)
- javascript中 json数据的解析与序列化
热门文章
- 移动端h5页面的那些坑
- 使用ES6的Promise完美解决回调地狱
- 课程四(Convolutional Neural Networks),第一周(Foundations of Convolutional Neural Networks) —— 3.Programming assignments:Convolutional Model: application
- Jenkins系列之二——centos 6.9 + JenKins 安装
- CountDownLatch 和 CyclicBarrier 的基本使用
- 六:理解控件的运行机制(例:基于WebControl命名空间的控件)
- Vue + Element UI 实现权限管理系统 前端篇(十三):页面权限控制
- linux下configure,make,make install的意义
- S0到S5状态讲解
- 基于Asp.Net Core 2.1的简单问答社区系统源代码分享