src/-make-array.js
function(target, key, value, receiver) {
		// If the receiver is not this observable (the observable might be on the proto chain),
		// set the key on the reciever.
		if (receiver !== this.proxy) {
			return makeObject.setKey(receiver, key, value, this);
		}

		// If it has a defined property definiition
		var computedValue = computedHelpers.set(receiver, key, value);
		if(computedValue === true ) {
			return true;
		}

		// Gets the observable value to set.
		value = makeObject.getValueToSet(key, value, this);
		var startingLength = target.length;

		// Sets the value on the target.  If there
		// is a change, calls the callback.
		makeObject.setValueAndOnChange(key, value, this, function(key, value, meta, hadOwn, old) {

			// Determine the patches this change should dispatch
			var patches = [{
				key: key,
				type: hadOwn ? "set" : "add",
				value: value
			}];

			var numberKey = !isSymbolLike(key) && +key;

			// If we are adding an indexed value like `arr[5] =value` ...
			if ( isInteger(numberKey) ) {
				// If we set an enumerable property after the length ...
				if (!hadOwn && numberKey > startingLength) {
					// ... add patches for those values.
					patches.push({
						index: startingLength,
						deleteCount: 0,
						insert: target.slice(startingLength),
						type: "splice"
					});
				} else {
					// Otherwise, splice the value into the array.
					patches.push.apply(patches, mutateMethods.splice(target, [numberKey, 1, value]));
				}
			}

			// In the case of deleting items by setting the length of the array,
			// add patches that splice the items removed.
			// (deleting individual items from an array doesn't change the length; it just creates holes)
			if (didLengthChangeCauseDeletions(key, value, old, meta)) {
				patches.push({
					index: value,
					deleteCount: old - value,
					insert: [],
					type: "splice"
				});
			}
			//!steal-remove-start
			var reasonLog = [canReflect.getName(meta.proxy)+" set", key,"to", value];
			//!steal-remove-end

			var dispatchArgs = {
				type: key,
				patches: patches,
				keyChanged: !hadOwn ? key : undefined
			};

			//!steal-remove-start
			if(process.env.NODE_ENV !== 'production') {
				dispatchArgs.reasonLog = reasonLog;
			}
			//!steal-remove-end

			mapBindings.dispatch.call( meta.proxy, dispatchArgs, [value, old]);

		});

		return true;
	}
function(target, key, value, receiver) {
		// If the receiver is not this observable (the observable might be on the proto chain),
		// set the key on the reciever.
		if (receiver !== this.proxy) {
			return makeObject.setKey(receiver, key, value, this);
		}

		// If it has a defined property definiition
		var computedValue = computedHelpers.set(receiver, key, value);
		if(computedValue === true ) {
			return true;
		}

		// Gets the observable value to set.
		value = makeObject.getValueToSet(key, value, this);
		var startingLength = target.length;

		// Sets the value on the target.  If there
		// is a change, calls the callback.
		makeObject.setValueAndOnChange(key, value, this, function(key, value, meta, hadOwn, old) {

			// Determine the patches this change should dispatch
			var patches = [{
				key: key,
				type: hadOwn ? "set" : "add",
				value: value
			}];

			var numberKey = !isSymbolLike(key) && +key;

			// If we are adding an indexed value like `arr[5] =value` ...
			if ( isInteger(numberKey) ) {
				// If we set an enumerable property after the length ...
				if (!hadOwn && numberKey > startingLength) {
					// ... add patches for those values.
					patches.push({
						index: startingLength,
						deleteCount: 0,
						insert: target.slice(startingLength),
						type: "splice"
					});
				} else {
					// Otherwise, splice the value into the array.
					patches.push.apply(patches, mutateMethods.splice(target, [numberKey, 1, value]));
				}
			}

			// In the case of deleting items by setting the length of the array,
			// add patches that splice the items removed.
			// (deleting individual items from an array doesn't change the length; it just creates holes)
			if (didLengthChangeCauseDeletions(key, value, old, meta)) {
				patches.push({
					index: value,
					deleteCount: old - value,
					insert: [],
					type: "splice"
				});
			}
			//!steal-remove-start
			var reasonLog = [canReflect.getName(meta.proxy)+" set", key,"to", value];
			//!steal-remove-end

			var dispatchArgs = {
				type: key,
				patches: patches,
				keyChanged: !hadOwn ? key : undefined
			};

			//!steal-remove-start
			if(process.env.NODE_ENV !== 'production') {
				dispatchArgs.reasonLog = reasonLog;
			}
			//!steal-remove-end

			mapBindings.dispatch.call( meta.proxy, dispatchArgs, [value, old]);

		});

		return true;
	}
function ( target , key , value , receiver ) { // If the receiver is not this observable (the observable might be on the proto chain), // set the key on the reciever. if ( receiver !== this . proxy ) { return makeObject . setKey ( receiver , key , value , this ) ; } // If it has a defined property definiition var computedValue = computedHelpers . set ( receiver , key , value ) ; if ( computedValue === true ) { return true ; } // Gets the observable value to set. value = makeObject . getValueToSet ( key , value , this ) ; var startingLength = target . length ; // Sets the value on the target.  If there // is a change, calls the callback. makeObject . setValueAndOnChange ( key , value , this , function ( key , value , meta , hadOwn , old ) { // Determine the patches this change should dispatch var patches = [ { key : key , type : hadOwn ? "set" : "add" , value : value } ] ; var numberKey = ! isSymbolLike ( key ) && + key ; // If we are adding an indexed value like `arr[5] =value` ... if ( isInteger ( numberKey ) ) { // If we set an enumerable property after the length ... if ( ! hadOwn && numberKey > startingLength ) { // ... add patches for those values. patches . push ( { index : startingLength , deleteCount : 0 , insert : target . slice ( startingLength ) , type : "splice" } ) ; } else { // Otherwise, splice the value into the array. patches . push . apply ( patches , mutateMethods . splice ( target , [ numberKey , 1 , value ] ) ) ; } } // In the case of deleting items by setting the length of the array, // add patches that splice the items removed. // (deleting individual items from an array doesn't change the length; it just creates holes) if ( didLengthChangeCauseDeletions ( key , value , old , meta ) ) { patches . push ( { index : value , deleteCount : old - value , insert : [ ] , type : "splice" } ) ; } //!steal-remove-start var reasonLog = [ canReflect . getName ( meta . proxy ) + " set" , key , "to" , value ] ; //!steal-remove-end var dispatchArgs = { type : key , patches : patches , keyChanged : ! hadOwn ? key : undefined } ; //!steal-remove-start if ( process . env . NODE_ENV !== 'production' ) { dispatchArgs . reasonLog = reasonLog ; } //!steal-remove-end mapBindings . dispatch . call ( meta . proxy , dispatchArgs , [ value , old ] ) ; } ) ; return true ; }
`set` is called when a property is set on the proxy or an object that has the proxy on its prototype.
set is called when a property is set on the proxy or an object that has the proxy on its prototype .